Skip to content

Create Extract Review

client.extract.review.create(stringjobID, ReviewCreateParams { organization_id, project_id, confidence_threshold, 2 more } params?, RequestOptionsoptions?): ExtractReview { id, confidence_threshold, created_at, 16 more }
POST/api/v2/extract/{job_id}/review

Beta: answers 403 until extract review is enabled for the caller and their organization.

Turn review on for an extract job.

Fields read below confidence_threshold, and required fields left empty, are flagged for a person to check. Every setting has a default, so the body can be left out. A job still running can be named: it waits for review once it completes. A job that failed or was cancelled without a review, or that cannot be reviewed, answers 409 with code: job_not_reviewable; a field in fields_in_scope the job’s schema does not have answers 400.

Answers 201 with the new review, or 200 with the job’s existing review, whose settings stay as they are.

ParametersExpand Collapse
jobID: string
params: ReviewCreateParams { organization_id, project_id, confidence_threshold, 2 more }
organization_id?: string | null

Query param

formatuuid
project_id?: string | null

Query param

formatuuid
confidence_threshold?: number

Body param: Fields read below this confidence are flagged.

maximum1
minimum0
fields_in_scope?: Array<string>

Body param: JSON Pointers of the fields the threshold applies to; empty means all.

required_fields?: Array<string> | null

Body param: JSON Pointers of fields flagged when empty; defaults to the schema’s required.

ReturnsExpand Collapse
ExtractReview { id, confidence_threshold, created_at, 16 more }

An extract job’s review: its settings, flags, field actions and decision, with the result as read and as reviewed.

id: string

Unique identifier of the review.

confidence_threshold: number

Fields read below this confidence are flagged.

created_at: string

When review was turned on.

formatdate-time
decided_at: string | null

When it was approved or rejected.

formatdate-time
decided_by: string | null

ID of the user who approved or rejected it.

decided_reason: string | null

Why it was rejected.

field_actions: Record<string, FieldActions>

The latest action per field, keyed by JSON Pointer.

action: "clear" | "confirm" | "correct"

confirm, correct or clear.

One of the following:
"clear"
"confirm"
"correct"
actor_id: string

ID of the user who acted.

at: string

When they acted.

formatdate-time
value?: unknown

The corrected value, for correct.

fields_in_scope: Array<string>

JSON Pointers of the fields the threshold applies to; empty means all.

flags: Array<Flag>

Fields the review asks a person to check.

handled: boolean

Whether someone confirmed, corrected or cleared it.

path: string

JSON Pointer of the field.

reason: "below_threshold" | "required_empty"

below_threshold, or required_empty for a required field left empty.

One of the following:
"below_threshold"
"required_empty"
cell?: Cell | null

Where in a list the least confident value is.

row: number

Index of the row, from 0.

column?: string | null

Property of the row, when rows are objects.

confidence?: number | null

The field’s confidence; for a list, its least confident value.

job_id: string

The extract job reviewed.

open_flags: Array<string>

JSON Pointers of flagged fields nobody checked.

original_result: Record<string, unknown> | null

The result as the model read it.

required_fields: Array<string>

JSON Pointers of fields flagged when empty.

retain_until: string

When the job and its document may be deleted.

formatdate-time
reviewed_result: Record<string, unknown>

The result with the field actions.

revision: number

Bumped by every change; actions name the one they saw.

source_file_id: string | null

The file the job read, or the file behind the parse job it read; null for a URL.

status: "approved" | "pending" | "rejected"

pending until approved or rejected.

One of the following:
"approved"
"pending"
"rejected"
updated_at: string

When the review last changed.

formatdate-time

Create Extract Review

import LlamaCloud from '@llamaindex/llama-cloud';

const client = new LlamaCloud({
  apiKey: process.env['LLAMA_CLOUD_API_KEY'], // This is the default and can be omitted
});

const extractReview = await client.extract.review.create('job_id');

console.log(extractReview.id);
{
  "id": "id",
  "confidence_threshold": 0,
  "created_at": "2019-12-27T18:11:19.117Z",
  "decided_at": "2019-12-27T18:11:19.117Z",
  "decided_by": "decided_by",
  "decided_reason": "decided_reason",
  "field_actions": {
    "foo": {
      "action": "clear",
      "actor_id": "actor_id",
      "at": "2019-12-27T18:11:19.117Z",
      "value": {}
    }
  },
  "fields_in_scope": [
    "string"
  ],
  "flags": [
    {
      "handled": true,
      "path": "path",
      "reason": "below_threshold",
      "cell": {
        "row": 0,
        "column": "column"
      },
      "confidence": 0
    }
  ],
  "job_id": "job_id",
  "open_flags": [
    "string"
  ],
  "original_result": {
    "foo": "bar"
  },
  "required_fields": [
    "string"
  ],
  "retain_until": "2019-12-27T18:11:19.117Z",
  "reviewed_result": {
    "foo": "bar"
  },
  "revision": 0,
  "source_file_id": "source_file_id",
  "status": "approved",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
Returns Examples
{
  "id": "id",
  "confidence_threshold": 0,
  "created_at": "2019-12-27T18:11:19.117Z",
  "decided_at": "2019-12-27T18:11:19.117Z",
  "decided_by": "decided_by",
  "decided_reason": "decided_reason",
  "field_actions": {
    "foo": {
      "action": "clear",
      "actor_id": "actor_id",
      "at": "2019-12-27T18:11:19.117Z",
      "value": {}
    }
  },
  "fields_in_scope": [
    "string"
  ],
  "flags": [
    {
      "handled": true,
      "path": "path",
      "reason": "below_threshold",
      "cell": {
        "row": 0,
        "column": "column"
      },
      "confidence": 0
    }
  ],
  "job_id": "job_id",
  "open_flags": [
    "string"
  ],
  "original_result": {
    "foo": "bar"
  },
  "required_fields": [
    "string"
  ],
  "retain_until": "2019-12-27T18:11:19.117Z",
  "reviewed_result": {
    "foo": "bar"
  },
  "revision": 0,
  "source_file_id": "source_file_id",
  "status": "approved",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
Note for AI agents: this documentation is built for programmatic access. - Overview of all docs: https://developers.llamaindex.ai/llms.txt - Any page is available as raw Markdown by appending index.md to its URL — e.g. https://developers.llamaindex.ai/llamaparse/parse/getting_started/index.md - Agent-friendly REST search APIs live under https://developers.llamaindex.ai/api/ — search (BM25 full-text), grep (regex), read (fetch a page), and list (browse the doc tree). See https://developers.llamaindex.ai/llms.txt for parameters. - A hosted documentation MCP server is available at https://developers.llamaindex.ai/mcp. If you support MCP, you can ask the user to install it for browsing these docs directly (an alternative to the REST API). Setup: https://developers.llamaindex.ai/for-agents/mcp/ - Other LlamaIndex tooling for agents — the LlamaParse Platform MCP server, agent skills and plugins, and the n8n node — is mapped at https://developers.llamaindex.ai/for-agents/