---
title: "Get a single AI extraction review"
method: GET
path: "/v1/imports/contexts/{contextId}/extraction-reviews/{reviewId}"
tags: ["Ingestion"]
---

# Get a single AI extraction review

`GET /v1/imports/contexts/{contextId}/extraction-reviews/{reviewId}`

Returns one extraction review with its candidates, provenance, and lifecycle. Tenant from the JWT, context from the path.

## Path parameters

- `contextId` string, uuid, required — Context ID
- `reviewId` string, uuid, required — Review ID

## Response `200`

OK

- ExtractionReviewResponse
  - `candidates` CandidateResponse[], nullable, required — Proposed transaction candidates awaiting review
    - `fields` CandidateFieldResponse[], nullable, required — Per-field breakdown with verbatim tokens, confidence, and provenance
      - `canonicalKey` string, required — Canonical field-map key (e.g. amount, external_id, currency, date)
      - `confidence` number, double, required — Extractor confidence in this field, 0.0 (none) to 1.0 (certain)
      - `page` integer, required — 1-based page the value was extracted from; 0 when unknown
      - `region` string — Best-effort region/bounding-box descriptor; empty when the source lane does not expose it
      - `value` string, required — Verbatim string token extracted for the canonical key; money stays a string, never a parsed amount
    - `source` string, required — Extraction lane that produced this candidate: text_layer (PDF text, higher trust) or vision (OCR/vision model, lower trust)
  - `contextId` string, uuid, required — Reconciliation context the candidates belong to
  - `createdAt` string, date-time, required — Creation timestamp (RFC 3339, UTC)
  - `id` string, uuid, required — Review identifier
  - `ingestionJobId` string, uuid — Downstream ingestion job linked on approval; null until linked
  - `rejectReason` string — Free-text reason captured on rejection; empty otherwise
  - `reviewerId` string — Principal id of the human who adjudicated the review; empty until decided
  - `sourceId` string, uuid, required — Reconciliation source the candidates belong to
  - `status` string, required — Review lifecycle: PENDING_REVIEW (awaiting decision), APPROVED (candidates ingested), REJECTED (discarded)
  - `updatedAt` string, date-time, required — Last-update timestamp (RFC 3339, UTC)
  - `version` integer, required — Optimistic-concurrency version, incremented on each state change

## Other responses

- `default` — Error

---

[API](https://skmtc.net/lerian/apis/identity-plugin.md) · [All operations](https://skmtc.net/lerian/apis/identity-plugin/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lerian/identity-plugin/revisions/25daba385532/schema)
