<!-- Generated by scripts/gen-developer-docs.ts from src/developers/content/recruit/reports.md — do not edit. -->

# Reports and decisions

> Read evidence-linked screening reports and the decisions your team records — a person always decides.

## Reports

When an interview finishes you receive `screen.completed`, then `report.ready` (or `report.failed` when the report is
delayed). `GET /api/v1/reports/{reportId}` (scope `read:reports`) answers the same payload as the `report.ready` event:

- `facts` — what the candidate stated, each with its evidence (quotes and times);
- `knockouts` — each knock-out check as `pass`, `fail` or `unclear`, with the quote;
- `dimensions` — evidence bands (`below_bar`, `meets`, `strong`) per dimension, never a composite score;
- `flags`, a `summary`, the `screen` (channel and duration), the Copy-for-ATS text and, on API reads, the `invite` and
  `score_summary` counts.

`GET /api/v1/roles/{roleId}/reports` lists a role's reports (filters `state`, `since`; `cursor`/`limit` paging with
`next_cursor`).

## Decisions

A person on your team records the decision — advance, reject or hold — in Recruit100x. It appears as `decision` on the
report and as the `decision.recorded` event. **The API never makes or records a hiring decision**, and Recruit100x never
auto-rejects anyone.
