---
title: "List reports for a project"
method: GET
path: "/v0/projects/{project}/reports"
tags: ["projects", "reports"]
---

# List reports for a project

`GET /v0/projects/{project}/reports`

List all reports for a project. If the project is public, then the user does not need to be authenticated. If the project is private, then the user must be authenticated and have `view` permissions for the project, or provide a valid project key for the project. By default, the reports are sorted by date time in reverse chronological order. By default, the results and alerts for each report are omitted and only their counts are included. Set the `expand` query param to `true` to include the full results and alerts. The HTTP response header `X-Total-Count` contains the total number of reports.

## Path parameters

- `project` string, required

## Query parameters

- `direction` 'asc' | 'desc'
- `page` integer, nullable
- `per_page` integer, nullable
- `sort` 'date_time' — Sort by date time.
- `archived` boolean, nullable
- `branch` string, nullable
- `end_time` integer
- `expand` boolean, nullable
- `start_time` integer
- `testbed` string, nullable

## Response `200`

successful operation

- JsonReport[]
  - `adapter` 'magic' | 'json' | 'json_v0' | 'json_v1' | 'rust' | 'rust_bench' | 'rust_criterion' | 'rust_iai' | 'rust_gungraun' | 'rust_gungraun_stdout' | 'rust_gungraun_json' | 'cpp' | 'cpp_google' | 'cpp_catch2' | 'go' | 'go_bench' | 'java' | 'java_jmh' | 'c_sharp' | 'c_sharp_dot_net' | 'js' | 'js_benchmark' | 'js_time' | 'js_vitest' | 'python' | 'python_asv' | 'python_pytest' | 'ruby' | 'ruby_benchmark' | 'shell' | 'shell_hyperfine' | 'dart' | 'dart_benchmark_harness', required
  - `alerts` JsonAlert[], nullable — The report alerts. Omitted by default from the reports list endpoint; use the `expand` query param to include them.
    - `benchmark` JsonBenchmark, required
      - `archived` string, date-time
      - `created` string, date-time, required
      - `modified` string, date-time, required
      - `name` string, required
      - `project` string, uuid, required
      - `slug` string, required
      - `uuid` string, uuid, required
    - `boundary` JsonBoundary, required
      - `baseline` number, double, nullable
      - `lower_limit` number, double, nullable
      - `upper_limit` number, double, nullable
    - `created` string, date-time, required
    - `iteration` integer, required
    - `limit` 'lower' | 'upper', required
    - `metric` JsonMetricTriple, required
      - `lower_value` number, double, nullable
      - `upper_value` number, double, nullable
      - `uuid` string, uuid, required
      - `value` number, double, required
    - `modified` string, date-time, required
    - `report` string, uuid, required
    - `status` union, required
      - 'active' — The alert is active.
      - 'dismissed' — The alert has been dismissed by a user.
      - 'silenced' — The alert has been silenced by the system.
    - `threshold` JsonThreshold, required
      - `branch` JsonBranch, required
        - `archived` string, date-time
        - `created` string, date-time, required
        - `head` JsonHead, required
          - `created` string, date-time, required
          - `replaced` string, date-time
          - `start_point` JsonStartPoint
            - `branch` string, uuid, required
            - `head` string, uuid, required
            - `version` JsonVersion, required
              - …
          - `uuid` string, uuid, required
          - `version` JsonVersion
            - `hash` string
            - `number` integer, required
        - `modified` string, date-time, required
        - `name` string, required
        - `project` string, uuid, required
        - `slug` string, required
        - `uuid` string, uuid, required
      - `created` string, date-time, required
      - `measure` JsonMeasure, required
        - `archived` string, date-time
        - `created` string, date-time, required
        - `modified` string, date-time, required
        - `name` string, required
        - `project` string, uuid, required
        - `slug` string, required
        - `units` string, required
        - `uuid` string, uuid, required
      - `model` JsonModel
        - `created` string, date-time, required
        - `lower_boundary` number, double
        - `max_sample_size` integer
        - `min_sample_size` integer
        - `replaced` string, date-time
        - `test` 'static' | 'percentage' | 'z_score' | 't_test' | 'log_normal' | 'iqr' | 'delta_iqr', required
        - `upper_boundary` number, double
        - `uuid` string, uuid, required
        - `window` integer
      - `modified` string, date-time, required
      - `project` string, uuid, required
      - `testbed` JsonTestbed, required
        - `archived` string, date-time
        - `created` string, date-time, required
        - `modified` string, date-time, required
        - `name` string, required
        - `project` string, uuid, required
        - `slug` string, required
        - `spec` JsonSpec — A hardware spec
          - `architecture` 'x86_64' | 'aarch64', required
          - `archived` string, date-time
          - `cpu` integer, required
          - `created` string, date-time, required
          - `disk` integer, required
          - `fallback` string, date-time
          - `memory` integer, required
          - `modified` string, date-time, required
          - `name` string, required
          - `network` boolean, required
          - `os` 'linux' | 'macos' | 'windows', required
          - `sandbox` 'firecracker'
          - `slug` string, required
          - `uuid` string, uuid, required
        - `uuid` string, uuid, required
      - `uuid` string, uuid, required
    - `uuid` string, uuid, required
  - `branch` JsonBranch, required
    - `archived` string, date-time
    - `created` string, date-time, required
    - `head` JsonHead, required
      - `created` string, date-time, required
      - `replaced` string, date-time
      - `start_point` JsonStartPoint
        - `branch` string, uuid, required
        - `head` string, uuid, required
        - `version` JsonVersion, required
          - `hash` string
          - `number` integer, required
      - `uuid` string, uuid, required
      - `version` JsonVersion
        - `hash` string
        - `number` integer, required
    - `modified` string, date-time, required
    - `name` string, required
    - `project` string, uuid, required
    - `slug` string, required
    - `uuid` string, uuid, required
  - `counts` JsonReportCounts — Counts for a report.
    - `alerts` JsonReportAlertsCounts, required — Counts for the alerts of a report.
      - `active` integer, required — The number of active alerts.
      - `total` integer, required — The total number of alerts.
    - `results` JsonReportIterationCounts[], required — Counts for the report results, one entry per iteration.
      - `benchmarks` integer, required — The number of results in this iteration: one per grid point, so one per benchmark for a benchmark that reports a single parameter set.
      - `measures` integer, required — The number of distinct measures in this iteration.
  - `created` string, date-time, required
  - `end_time` string, date-time, required
  - `job` string, uuid
  - `project` JsonProject, required
    - `claimed` string, date-time
    - `created` string, date-time, required
    - `modified` string, date-time, required
    - `name` string, required
    - `organization` string, uuid, required
    - `slug` string, required
    - `url` string
    - `uuid` string, uuid, required
    - `visibility` 'public' | 'private', required
  - `results` array[], nullable — The report results, one list of results per iteration. Omitted by default from the reports list endpoint; use the `expand` query param to include them.
    - JsonReportResult[]
      - `benchmark` JsonBenchmark, required
        - `archived` string, date-time
        - `created` string, date-time, required
        - `modified` string, date-time, required
        - `name` string, required
        - `project` string, uuid, required
        - `slug` string, required
        - `uuid` string, uuid, required
      - `iteration` integer, required
      - `measures` JsonReportMeasure[], required
        - `boundary` JsonBoundary
          - `baseline` number, double, nullable
          - `lower_limit` number, double, nullable
          - `upper_limit` number, double, nullable
        - `measure` JsonMeasure, required
          - `archived` string, date-time
          - `created` string, date-time, required
          - `modified` string, date-time, required
          - `name` string, required
          - `project` string, uuid, required
          - `slug` string, required
          - `units` string, required
          - `uuid` string, uuid, required
        - `metric` JsonMetricTriple
          - `lower_value` number, double, nullable
          - `upper_value` number, double, nullable
          - `uuid` string, uuid, required
          - `value` number, double, required
        - `metrics` JsonReportMetric[], required — Every named scalar ingested for this measure, in a stable order.
          - `boundaries` JsonReportBoundary[], required — Every threshold that gated this named scalar, with the boundary it produced. Length 0 or 1 until threshold predicates ship.
            - `boundary` JsonBoundary, required
              - …
            - `threshold` JsonThresholdModel, required
              - …
          - `name` string, required — The name of a single scalar inside a metric. Every name is equal on the wire. `value`, `lower_value`, and `upper_value` are conventional, not privileged: they are the names the metric triple maps onto, and the names the console knows well enough to draw a band.
          - `uuid` string, uuid, required
          - `value` number, double, required
        - `threshold` JsonThresholdModel
          - `created` string, date-time, required
          - `model` JsonModel, required
            - `created` string, date-time, required
            - `lower_boundary` number, double
            - `max_sample_size` integer
            - `min_sample_size` integer
            - `replaced` string, date-time
            - `test` 'static' | 'percentage' | 'z_score' | 't_test' | 'log_normal' | 'iqr' | 'delta_iqr', required
            - `upper_boundary` number, double
            - `uuid` string, uuid, required
            - `window` integer
          - `project` string, uuid, required
          - `uuid` string, uuid, required
      - `parameter` JsonReportParameter, required — The parameter set a report result ran with.
        - `set` ParameterSet, required
        - `uuid` string, uuid, required
  - `start_time` string, date-time, required
  - `testbed` JsonTestbed, required
    - `archived` string, date-time
    - `created` string, date-time, required
    - `modified` string, date-time, required
    - `name` string, required
    - `project` string, uuid, required
    - `slug` string, required
    - `spec` JsonSpec — A hardware spec
      - `architecture` 'x86_64' | 'aarch64', required
      - `archived` string, date-time
      - `cpu` integer, required
      - `created` string, date-time, required
      - `disk` integer, required
      - `fallback` string, date-time
      - `memory` integer, required
      - `modified` string, date-time, required
      - `name` string, required
      - `network` boolean, required
      - `os` 'linux' | 'macos' | 'windows', required
      - `sandbox` 'firecracker'
      - `slug` string, required
      - `uuid` string, uuid, required
    - `uuid` string, uuid, required
  - `user` JsonPubUser
    - `name` string, required
    - `slug` string, required
    - `uuid` string, uuid, required
  - `uuid` string, uuid, required

## Other responses

- `4XX` — Error
- `5XX` — Error

## Changes

> 64 revisions in range; 38 could not be searched.

- **2026-03-20** `36c8ad753527` — 2 breaking, 2 warning, 3 info
  - removed the required property `items/alerts/items/threshold/testbed/spec/allOf[#/components/schemas/JsonSpec]/os` from the response with the `200` status
  - removed the required property `items/testbed/spec/allOf[#/components/schemas/JsonSpec]/os` from the response with the `200` status
  - removed the optional property `items/alerts/items/threshold/testbed/spec/allOf[#/components/schemas/JsonSpec]/sandbox` from the response with the `200` status
  - removed the optional property `items/testbed/spec/allOf[#/components/schemas/JsonSpec]/sandbox` from the response with the `200` status
  - …3 more

[Change history](https://skmtc.dev/bencherdev/apis/bencher-api/changes/v0/projects/:project/reports/get.md)

---

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