---
title: "Get aggregated statistics for a POT"
method: GET
path: "/pots/{pot_id}/stats"
tags: ["facts", "facts"]
---

# Get aggregated statistics for a POT

`GET /pots/{pot_id}/stats`

Get aggregated statistics for a POT.

Computes per-level fact counts via Select="COUNT" + FilterExpression
queries — no fact rows materialized. Used by KB2B's dashboard to render
the score distribution chart and total fact count without sampling.

## Path parameters

- `pot_id` string, uuid, required

## Response `200`

Stats retrieved successfully

- POTStatsResponse — Aggregated statistics for a POT (M22).
  - `total_facts` integer — Total facts in the POT (uncapped)
  - `constitution_count` integer — Number of constitution axioms
  - `score_distribution` ScoreDistribution — Per-level fact counts for a POT. Cutoffs mirror PotScoreLevel.from_score so distribution counts agree with the level enum used everywhere else in SciPot.
    - `constitution` integer — POT score == 1.0
    - `verified` integer — 0.8 <= POT score < 1.0
    - `supported` integer — 0.6 <= POT score < 0.8
    - `inferred` integer — 0.4 <= POT score < 0.6
    - `hypothesis` integer — 0.2 <= POT score < 0.4
    - `speculation` integer — POT score < 0.2
  - `average_score` number — Approximate average POT score, computed from level midpoints. Exact within ~0.1 for typical distributions; this avoids loading all fact rows.

## Other responses

- `404` — POT not found
- `422` — Validation Error

---

[API](https://skmtc.dev/scipot/apis/scipot-core-api.md) · [All operations](https://skmtc.dev/scipot/apis/scipot-core-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/scipot/scipot-core-api/revisions/e8712e9ffeae/schema)
