---
title: "List reports"
method: GET
path: "/v1/reports"
tags: ["Reports"]
---

# List reports

`GET /v1/reports`

## Request

- Base URL: `https://api.squirrelscan.com`
- URL: `https://api.squirrelscan.com/v1/reports`
- Auth: HTTP bearer

List the authenticated user's published reports, newest first.

## Query parameters

- `limit` integer
- `offset` integer

## Response `200`

Paginated list of reports.

- ReportList
  - `reports` Report[], required
    - `id` string, required
    - `baseUrl` string, uri, required
    - `healthScore` integer, nullable
    - `pageCount` integer, nullable
    - `errorCount` integer, nullable
    - `warningCount` integer, nullable
    - `passedCount` integer, nullable
    - `visibility` 'public' | 'unlisted' | 'private', required
    - `viewCount` integer, nullable
    - `auditedAt` string, date-time, nullable
    - `createdAt` string, date-time, required
    - `url` string, uri, required
  - `total` integer, required
  - `hasMore` boolean, required

## Other responses

- `401`: Missing or invalid credentials (including the shared auth middleware: no/invalid bearer token). Typed envelope with code `UNAUTHORIZED`. Branch on the `401` status, not the message.
- `429`: Too many requests. Retry after the window resets. (Rate limiting is planned — issue #69 — these headers document the intended contract.)

---

[API](https://skmtc.dev/squirrelscan/apis/squirrelscan-public-api.md) · [All operations](https://skmtc.dev/squirrelscan/apis/squirrelscan-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/squirrelscan/apis/squirrelscan-public-api/revisions/82c8183fe8bc?raw)
