Skip to content

Create Extract Review

extract.review.create(strjob_id, ReviewCreateParams**kwargs) -> ExtractReview
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
job_id: str
organization_id: Optional[str]
project_id: Optional[str]
confidence_threshold: Optional[float]

Fields read below this confidence are flagged.

maximum1
minimum0
fields_in_scope: Optional[Sequence[str]]

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

required_fields: Optional[Sequence[str]]

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

ReturnsExpand Collapse
class ExtractReview: …

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

id: str

Unique identifier of the review.

confidence_threshold: float

Fields read below this confidence are flagged.

created_at: datetime

When review was turned on.

formatdate-time
decided_at: Optional[datetime]

When it was approved or rejected.

formatdate-time
decided_by: Optional[str]

ID of the user who approved or rejected it.

decided_reason: Optional[str]

Why it was rejected.

field_actions: Dict[str, FieldActions]

The latest action per field, keyed by JSON Pointer.

action: Literal["clear", "confirm", "correct"]

confirm, correct or clear.

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

ID of the user who acted.

at: datetime

When they acted.

formatdate-time
value: Optional[object]

The corrected value, for correct.

fields_in_scope: List[str]

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

flags: List[Flag]

Fields the review asks a person to check.

handled: bool

Whether someone confirmed, corrected or cleared it.

path: str

JSON Pointer of the field.

reason: Literal["below_threshold", "required_empty"]

below_threshold, or required_empty for a required field left empty.

One of the following:
"below_threshold"
"required_empty"
cell: Optional[FlagCell]

Where in a list the least confident value is.

row: int

Index of the row, from 0.

column: Optional[str]

Property of the row, when rows are objects.

confidence: Optional[float]

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

job_id: str

The extract job reviewed.

open_flags: List[str]

JSON Pointers of flagged fields nobody checked.

original_result: Optional[Dict[str, object]]

The result as the model read it.

required_fields: List[str]

JSON Pointers of fields flagged when empty.

retain_until: datetime

When the job and its document may be deleted.

formatdate-time
reviewed_result: Dict[str, object]

The result with the field actions.

revision: int

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

source_file_id: Optional[str]

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

status: Literal["approved", "pending", "rejected"]

pending until approved or rejected.

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

When the review last changed.

formatdate-time

Create Extract Review

import os
from llama_cloud import LlamaCloud

client = LlamaCloud(
    api_key=os.environ.get("LLAMA_CLOUD_API_KEY"),  # This is the default and can be omitted
)
extract_review = client.extract.review.create(
    job_id="job_id",
)
print(extract_review.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/