---
title: "Read bounded Experiment jobs, datasets, and evaluations"
method: GET
path: "/experiments/{experiment_id}/assets"
tags: ["experiments"]
---

# Read bounded Experiment jobs, datasets, and evaluations

`GET /experiments/{experiment_id}/assets`

Read privacy-safe assets as the creator or an Owner/Admin.

Args:
    experiment_id: Experiment identifier.
    query: Per-collection bound and optional exact selected job.
    auth: Authenticated caller.

Returns:
    Authorized bounded assets and stable landing summary.

## Path parameters

- `experiment_id` string, uuid, required

## Query parameters

- `limit` integer
- `selected_job_id` string, uuid, nullable

## Response `200`

Successful Response

- ExperimentAssetsResponse — One bounded, authorized snapshot of Experiment-scoped assets.
  - `experiment_id` string, 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.
  - `training_jobs` ExperimentTrainingJobResponse[], required
    - `id` string, required
    - `model_name` string, nullable, required
    - `version_number` string, required
    - `base_model` string, required
    - `status` string, required
    - `normalized_status` string, required
    - `is_active` boolean, required
    - `is_serving_incumbent` boolean
    - `progress_percent` integer, nullable, required
    - `dataset_versions` ExperimentJobDatasetResponse[], required
      - `dataset_id` string, required
      - `name` string, required
      - `version_number` string, required
    - `dataset_versions_truncated` boolean, required
    - `created_at` string, date-time, required
    - `last_activity_at` string, date-time, required
    - `started_at` string, date-time, nullable, required
    - `completed_at` string, date-time, nullable, required
    - `hub_model_id` string, nullable — HuggingFace Hub repo ID set when a successful push-to-hub call completed for this job. The sole reliable signal that the checkpoint was published -- absence means never pushed, not necessarily private. Never derive a Hub link from any other field (e.g. a storage path); those aren't Hub identifiers.
    - `hub_model_private` boolean, nullable — Whether the pushed Hub repo is private, as recorded at push time. Null for a job that has never been pushed, and for a push recorded before this field existed (ENG-6761) -- this means the visibility was not recorded, not that either visibility applies. Render null as a neutral 'pushed, visibility unknown' state rather than assuming either PUBLISHED or PRIVATE.
  - `datasets` ExperimentDatasetResponse[], required
    - `id` string, required
    - `name` string, required
    - `version_number` string, required
    - `dataset_type` string, required
    - `sample_size` integer, nullable, required
    - `status` string, nullable, required
    - `attached_at` string, date-time, required
    - `source_experiment_id` string, nullable, required
    - `last_activity_at` string, date-time, required
  - `evaluations` ExperimentEvaluationResponse[], required
    - `id` string, required
    - `model_id` string, required
    - `model_name` string, nullable, required
    - `incumbent_model_id` string, nullable
    - `dataset_id` string, nullable, required
    - `status` string, required
    - `f1_score` number, nullable, required
    - `precision_score` number, nullable, required
    - `recall_score` number, nullable, required
    - `accuracy` number, nullable, required
    - `validation_loss` number, nullable, required
    - `sample_count` integer, nullable, required
    - `created_at` string, date-time, nullable, required
    - `completed_at` string, date-time, nullable, required
  - `selected_training_job` ExperimentTrainingJobResponse, required — Privacy-safe training attempt metadata for landing and Assets.
    - `id` string, required
    - `model_name` string, nullable, required
    - `version_number` string, required
    - `base_model` string, required
    - `status` string, required
    - `normalized_status` string, required
    - `is_active` boolean, required
    - `is_serving_incumbent` boolean
    - `progress_percent` integer, nullable, required
    - `dataset_versions` ExperimentJobDatasetResponse[], required
      - `dataset_id` string, required
      - `name` string, required
      - `version_number` string, required
    - `dataset_versions_truncated` boolean, required
    - `created_at` string, date-time, required
    - `last_activity_at` string, date-time, required
    - `started_at` string, date-time, nullable, required
    - `completed_at` string, date-time, nullable, required
    - `hub_model_id` string, nullable — HuggingFace Hub repo ID set when a successful push-to-hub call completed for this job. The sole reliable signal that the checkpoint was published -- absence means never pushed, not necessarily private. Never derive a Hub link from any other field (e.g. a storage path); those aren't Hub identifiers.
    - `hub_model_private` boolean, nullable — Whether the pushed Hub repo is private, as recorded at push time. Null for a job that has never been pushed, and for a push recorded before this field existed (ENG-6761) -- this means the visibility was not recorded, not that either visibility applies. Render null as a neutral 'pushed, visibility unknown' state rather than assuming either PUBLISHED or PRIVATE.
  - `training_jobs_has_more` boolean, required
  - `datasets_has_more` boolean, required
  - `evaluations_has_more` boolean, required
  - `serving_model_id` string, nullable

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-24** `1cffaad2a921` — 1 warning, 14 info
  - removed the optional property `detail` from the response with the `422` status
  - added the optional property `evaluations/items/incumbent_model_id` to the response with the `200` status
  - added the optional property `selected_training_job/anyOf[subschema #1: ExperimentTrainingJobResponse]/hub_model_id` to the response with the `200` status
  - added the optional property `selected_training_job/anyOf[subschema #1: ExperimentTrainingJobResponse]/hub_model_private` to the response with the `200` status
  - …11 more
- **2026-08-19** `b92f75fd3b61` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/pioneer/apis/brain-api/changes/experiments/:experiment_id/assets/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)
