---
title: "List Project Inference Clusters"
method: GET
path: "/projects/{project_id}/inference-clusters"
tags: ["inference-clusters"]
---

# List Project Inference Clusters

`GET /projects/{project_id}/inference-clusters`

List inference clusters for a project.

Args:
    project_id: Project ID.
    window: Metrics window for ranking/counts.
    status: Optional comma-delimited status filter.
    base_model: Optional base model filter.
    model_id: Optional model ID filter.
    training_job_id: Optional training job filter.
    severity: Optional severity filter.
    auth: Authentication result.

Returns:
    Grouped project inference clusters.

Raises:
    HTTPException: 404 for inaccessible projects.

## Path parameters

- `project_id` string, uuid, required

## Query parameters

- `window` '24h' | '7d' | '30d' | 'all'
- `status` string, nullable — Comma-delimited statuses. Defaults to open,reopened.
- `base_model` string, nullable
- `model_id` string, nullable
- `training_job_id` string, nullable
- `severity` 'high' | 'mid' | 'low', nullable

## Response `200`

Successful Response

- ProjectInferenceClustersResponse — Response for listing all project inference clusters. Attributes: project_id: Project ID. window: Metrics window used for ranking and counts. summary: Project-level cluster summary. base_models: Clusters grouped by base model and variant.
  - `project_id` string, required
  - `window` '24h' | '7d' | '30d' | 'all', required
  - `summary` ProjectInferenceClusterSummary, required — Project-level cluster summary for the selected window. Attributes: active_cluster_count: Number of active clusters returned. open_count: Number of open clusters. reopened_count: Number of reopened clusters. not_pass_count: Total fail or uncertain member count. fail_count: Total fail count. uncertain_count: Total uncertain count.
    - `active_cluster_count` integer
    - `open_count` integer
    - `reopened_count` integer
    - `not_pass_count` integer
    - `fail_count` integer
    - `uncertain_count` integer
  - `base_models` InferenceClusterBaseModelGroup[]
    - `base_model` string, required
    - `variants` InferenceClusterVariantGroup[]
      - `variant_type` 'base' | 'adapter', required
      - `model_id` string, required
      - `training_job_id` string, nullable
      - `clusters` InferenceClusterCard[]
        - `id` string, required
        - `rank` integer, required
        - `status` 'open' | 'reopened' | 'resolved' | 'ignored', required
        - `severity` 'high' | 'mid' | 'low', required
        - `failure_label` string, required
        - `failure_label_slug` string, required
        - `task_domain_label` string, nullable
        - `task_domain_slug` string, nullable
        - `usage_taxonomy_label` string, nullable
        - `usage_taxonomy_slug` string, nullable
        - `root_cause_label` string, nullable
        - `root_cause_slug` string, nullable
        - `summary` string, required
        - `failure_facts` object[]
        - `root_causes` object[]
        - `metrics` InferenceClusterMetrics — Windowed metrics for a cluster. Attributes: not_pass_count: Number of fail or uncertain inferences. fail_count: Number of fail verdicts. uncertain_count: Number of uncertain verdicts. affected_rate: Fraction of judged inferences affected by the cluster (``not_pass_count / total_judged``). total_judged: Denominator used to compute ``affected_rate`` — the number of same-scope judged inferences in the window. Surfaced so dashboard cards can render ``n / N`` and the frontend can verify that all cards in the same group share the same denominator.
          - `not_pass_count` integer
          - `fail_count` integer
          - `uncertain_count` integer
          - `affected_rate` number, nullable
          - `total_judged` integer, nullable
        - `representative_examples` InferenceClusterExample[]
          - `id` string, required
          - `created_at` string, date-time, nullable
          - `input` string, required
          - `output` union
            - object
            - string
          - `llmaj_verdict` string, nullable
          - `llmaj_score` number, nullable
          - `llmaj_reasoning` string, nullable
          - `llmaj_corrected_output` unknown
          - `model_id` string, nullable
          - `training_job_id` string, nullable
          - `base_model` string, nullable
          - `provider` string, required
          - `full_record` object, nullable
        - `created_at` string, date-time, required
        - `updated_at` string, date-time, required
        - `last_refreshed_at` string, date-time, nullable
        - `last_refresh_failed_at` string, date-time, nullable
        - `last_refresh_error_message` string, nullable
        - `last_member_added_at` string, date-time, nullable
  - `usage_aware_clustering_enabled` boolean
  - `usage_summary` string, nullable
  - `usage_drift_detected` boolean, nullable
  - `suggested_project_split` boolean
  - `split_rationale` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/pioneer/apis/brain-api.md) · [All operations](https://skmtc.net/pioneer/apis/brain-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pioneer/brain-api/revisions/31dfe831e079/schema)
