---
title: "The finding inbox"
method: GET
path: "/v1/findings"
tags: ["Findings"]
---

# The finding inbox

`GET /v1/findings`

## Request

- Base URL: `https://api.ironfang.com/audit`
- URL: `https://api.ironfang.com/audit/v1/findings`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Outstanding problems rather than audit results. A finding is one problem on one logical page against one requirement, for as long as that pairing exists: a page that fails the same rule every night is one finding, not one per night. Defaults to everything not resolved. Use sort=created for bounded cursor pages, newest creation time then ID descending. Creation time is immutable when a later audit sees the same problem, so updates do not move findings across the cursor. Filters are evaluated on each request; pages are not a frozen snapshot of membership. Omit sort for the legacy last-seen descending, ID ascending offset list. Summary counts are separate from the number of loaded findings.

## Query parameters

- `site_id` string, uuid
- `page_id` string, uuid
- `rule_id` string, uuid
- `state` string[]
- `severity` 'info' | 'warning' | 'failure' | 'critical'
- `assignee` string
- `open_longer_than_days` integer
- `limit` integer
- `sort` 'last_seen' | 'created'
- `cursor` string
- `offset` integer

## Response `200`

Findings; next_cursor is present only when another creation-ordered page exists.

- FindingList
  - `findings` Finding[], required
    - `accepted_risk_until` string, date-time
    - `assignee_user_id` string
    - `created_at` string, date-time, required
    - `due_at` string, date-time
    - `first_audit_id` string, uuid
    - `first_observation_id` string, uuid, required
    - `first_seen_at` string, date-time, required
    - `id` string, uuid, required
    - `last_seen_at` string, date-time, required
    - `latest_audit_id` string, uuid
    - `latest_observation_id` string, uuid, required
    - `organisation_id` string, uuid, required
    - `page_id` string, uuid, required
    - `page_url` string
    - `resolution_code` string
    - `resolved_at` string, date-time
    - `resolved_observation_id` string, uuid
    - `rule_lineage_id` string, uuid, required
    - `rule_name` string
    - `severity` 'info' | 'warning' | 'failure' | 'critical', required
    - `site_id` string, uuid, required
    - `site_name` string
    - `state` 'open' | 'acknowledged' | 'accepted_risk' | 'resolved' | 'reopened', required
    - `updated_at` string, date-time, required
  - `next_cursor` string

## Other responses

- `400`: Problem response
- `422`: Problem response

---

[API](https://skmtc.dev/ironfang/apis/ironfang-audit-api.md) · [All operations](https://skmtc.dev/ironfang/apis/ironfang-audit-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ironfang/apis/ironfang-audit-api/revisions/7430deff2cbd?raw)
