@llama_index: Most parsers treat tracked changes as noise. Result: a deleted clause comes back as live text, and your pipeline reads …
Summary
LlamaParse now handles revision tracking in documents, providing clean markdown of the final state and structured data for edits, deletions, and comments, addressing issues where parsers misinterpret tracked changes.
View Cached Full Text
Cached at: 08/18/26, 04:37 PM
Most parsers treat tracked changes as noise. Result: a deleted clause comes back as live text, and your pipeline reads a document that says the opposite of what it means.
LlamaParse now handles revision tracking. You get clean markdown of the document’s final state, plus every revision (edits, deletions, comments) as structured data with author, content, and location.
Contracts, regulatory submissions, policy drafts: if your documents go through redline rounds, this is for you.
Docs : https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#revision-tracking…
Sign Up: https://cloud.llamaindex.ai/?utm_medium=socials&utm_source=twitter&utm_campaign=2026-aug-…
Configuring Parse
Source: https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/ Parse has a lot of knobs. This page is the map: it shows how a parse request is structured and documents every option you can set.
For the full field-by-field reference, see theParse API Reference. For controlling what comesbackfrom a parse job, seeRetrieving Results.
Every Parse request is a JSON object. Only three fields arerequired— everything else is optional:
{ // --- Required --- "file_id": "<file_id>", // or "source_url" — exactly one is required "tier": "agentic", // fast | cost_effective | agentic | agentic_plus "version": "latest", // dated version string or "latest" // --- Optional --- "input_options": { /* file-type-specific hints */ }, "processing_options": { /* how Parse processes the document */ }, "agentic_options": { /* configures the agentic models */ }, "output_options": { /* shape of what Parse returns */ }, "crop_box": { /* page-level crop */ }, "page_ranges": { /* parse specific pages only */ }, "disable_cache": false, "processing_control": { /* timeouts and fail modes */ }, "webhook_configurations": [ /* push results to a URL */ ], "user_metadata": { /* key/value tags you attach to this job */ }}
The simplest valid request is just these three fields — everything below them can be added when you need it.
Note:
expandis not part of the parse request body. It’s a query parameter on theGET result endpointthat controls which fields come back. The SDKs handle this for you — when you passexpand=\["markdown"\]toclient\.parsing\.parse\(\), the SDK submits the job, polls until complete, then retrieves the result with the right expand values. If you’re using the REST API directly, seeRetrieving Results.
Where do I configure X?
Section titled “Where do I configure X?”
I want to…Set thisParse only specific pagespage\_ranges\.target\_pages(top-level)Strip headers/footers from every pagecrop\_box(top-level)Force a fresh parse (no cache)disable\_cache: true(top-level)Set a max job timeoutprocessing\_control\.timeouts\.base\_in\_seconds(top-level)Push results to a webhookwebhook\_configurations(top-level)Tag a job with your own metadatauser\_metadata(top-level)Set OCR languageprocessing\_options\.ocr\_parameters\.languagesSkip watermark textprocessing\_options\.ignore\.ignore\_diagonal\_textEnable chart parsingprocessing\_options\.specialized\_chart\_parsingAuto-route pages by complexityprocessing\_options\.cost\_optimizer\.enableScore parsing quality per pageprocessing\_options\.confidence\_score\_effortSteer with a custom promptagentic\_options\.custom\_promptGet HTML tables instead of markdownoutput\_options\.markdown\.tables\.output\_tables\_as\_markdown: falseExport tables as XLSXoutput\_options\.tables\_as\_spreadsheet\.enableGet per-page screenshotsoutput\_options\.images\_to\_save: \["screenshot"\]Preserve spatial layoutoutput\_options\.spatial\_textGet word / line / cell bounding boxesoutput\_options\.granular\_bboxesExtract Word tracked changes and commentsoutput\_options\.markdown\.annotate\_revisionsControl what comes backexpandquery param on theGETresult endpoint — seeRetrieving Results
Control how Parse reads your document— page ranges, crop boxes, file-type-specific controls, and cache behavior.
Parse only the pages you need. Every page you skip is a page you don’t pay for.
API key:page\_ranges— top-level.
max\_pages(integer) — cap total pages parsed, starting from page 1target\_pages(string) — comma-separated 1-based pages and ranges, e.g."1,3,5\-10"
{ "page_ranges": { "max_pages": 5 } }{ "page_ranges": { "target_pages": "1,3,7-12" } }
Strip repeating headers, footers, and margin chrome from every page. Four numbers (0.0–1.0), each the fraction to strip from that edge.
API key:crop\_box— top-level.
{ "crop_box": { "top": 0.1, "bottom": 0.15 } }
This is a geometric crop, not a content filter. If the chrome moves between pages, usecontent-based ignore rulesinstead.
Parse caches identical requests by default. Any change to parse options busts the cache automatically.
API key:disable\_cache— top-level boolean.
{ "disable_cache": true }
Only disable for benchmarking, debugging, or verifying version pins.
API key:input\_options\.html.
Parse walks the DOM, extracts visible content, and produces clean markdown. These controls strip noise that doesn’t belong in the output:
make\_all\_elements\_visible— force hidden CSS content visible. Useful when parts of the document are behinddisplay: none,visibility: hidden, or JavaScript-driven UI states.remove\_navigation\_elements— strip menus, breadcrumbs, sidebar nav, and non-content chrome. Most useful when parsing a real web page rather than a hand-built HTML document.remove\_fixed\_elements— strip sticky headers, floating sidebars, and other fixed-position UI.
{ "input_options": { "html": { "make_all_elements_visible": true, "remove_navigation_elements": true, "remove_fixed_elements": true } }}
Spreadsheets (XLSX, CSV)
Section titled “Spreadsheets (XLSX, CSV)”
API key:input\_options\.spreadsheet.
Parse handles spreadsheets where layouts aren’t clean rectangular tables — multiple logical tables stacked in one sheet, formulas with stale cached values, etc.
detect\_sub\_tables\_in\_sheets— find and extract sub-tables within a single sheet. If your spreadsheet has three small tables stacked vertically with empty rows between them, Parse detects each as its own table instead of merging them.force\_formula\_computation\_in\_sheets— re-compute formula cells instead of using cached values. Enable when the file was edited but never recalculated, or you’re parsing a template with placeholder values. Can slow parsing on formula-heavy sheets.
{ "input_options": { "spreadsheet": { "detect_sub_tables_in_sheets": true, "force_formula_computation_in_sheets": true } }}
Presentations (PPTX, Keynote)
Section titled “Presentations (PPTX, Keynote)”
API key:input\_options\.presentation.
Speaker notes are extracted by default — requestexpand=\["metadata"\]to retrieve them on per-slide metadata.
out\_of\_bounds\_content— extract content positioned beyond the visible slide boundaries. Presenters sometimes park notes, draft text, or reference images outside the visible area.skip\_embedded\_data— skip extraction of embedded chart data. Set totrueif you only need slide text and the chart-data extraction is slowing you down.
{ "input_options": { "presentation": { "out_of_bounds_content": true, "skip_embedded_data": false } }}
Images (camera photos)
Section titled “Images (camera photos)”
API key:input\_options\.image.
Photos of documents — a receipt photographed on a desk, a form snapped with a phone — arrive tilted, surrounded by background, and unevenly lit. Parse can clean these up before parsing:
camera\_photo\_correction— detect the document’s boundary in the photo, crop it, perspective-correct it, and flatten uneven lighting and shadows so the page parses like a flat scan. Applies to JPEG, PNG, WebP, and HEIC/HEIF inputs (the iPhone camera default). Detection is conservative: images that already look like clean scans or screenshots are left untouched, so it is safe to enable on mixed image batches.
{ "input_options": { "image": { "camera_photo_correction": true } }}
API key:input\_options\.pdf— see theAPI referencefor available PDF-specific options.
**Shape what Parse returns.**Parse can emit several formats from the same job.
I want…UseClean text for an LLMMarkdown(default)Whitespace-preserving layoutSpatial textTables as downloadable XLSXTables as spreadsheetEmbedded images, screenshots, layout cropsImage assetsPrinted page numbers for citationsPrinted page numbersTracked changes and comments as structured dataRevision trackingPDF copy of any parsed documentExported PDFWord / line / cell bounding boxes for highlighting and groundingGranular bounding boxesResults pushed to my serverWebhooks### Markdown output options
Section titled “Markdown output options”
API key:output\_options\.markdown.
SymptomKnobDownstream needs HTML tablesoutput\_tables\_as\_markdown: falseTable spans multiple pagesmerge\_continued\_tables: trueImages transcribed instead of referencedinline\_images: trueWant link destinations in markdownannotate\_links: trueDocument has tracked changes or commentsannotate\_revisions: trueWhitespace in table cellscompact\_markdown\_tables: trueMulti-line cell content`markdown_table_multiline_separator: “```
{ “output_options”: { “markdown”: { “annotate_links”: true, “inline_images”: true, “tables”: { “merge_continued_tables”: true, “output_tables_as_markdown”: false } } }}
### Revision tracking
[Section titled “Revision tracking”](https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#revision-tracking)
Extract Word\-style tracked changes and reviewer comments as structured data alongside the parsed content — what changed, who changed it, and where it sits on the page and in the markdown\.
**API key:**`output\_options\.markdown\.annotate\_revisions`\. Retrieve via`expand=\["items"\]`\.
{ “output_options”: { “markdown”: { “annotate_revisions”: true } } }
Works on Word documents that contain tracked changes or comments, and on PDFs exported or printed from Word with the markup visible — including scanned copies\. Revision balloons produced by non\-English versions of Word are recognized too\.
When enabled, each page in the`items`result can carry a`revisions`array\. Every revision has a type \(`inserted`,`deleted`,`formatted`,`moved\_from`,`moved\_to`, or`comment`\), the target text it applies to, the revision or comment content, the author when available, bounding boxes for both the target text and the printed revision balloon, and character offsets linking the target to that page’s final markdown\. See[revisions on items pages](https://developers.llamaindex.ai/llamaparse/parse/guides/retrieving-results/#items)for the full response shape\.
In the Parse playground, extracted revisions appear in the**Revisions**tab after a run\.
**Tier limits:**revisions ride on the`items`result, which is not available on`fast`\.
Preserves visual positioning using whitespace\. Use for forms, CAD drawings, multi\-column layouts, receipts\.
**API key:**`output\_options\.spatial\_text`\. Retrieve via`expand=\["text"\]`\.
Flags:`preserve\_layout\_alignment\_across\_pages`,`preserve\_very\_small\_text`,`do\_not\_unroll\_columns`\.
### Tables as spreadsheet
[Section titled “Tables as spreadsheet”](https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#tables-as-spreadsheet)
Generates an XLSX file — one sheet per table\.
**API key:**`output\_options\.tables\_as\_spreadsheet`\. Retrieve via`expand=\["xlsx\_content\_metadata"\]`\.
{ “output_options”: { “tables_as_spreadsheet”: { “enable”: true } } }
**API key:**`output\_options\.images\_to\_save`— enum array:`"screenshot"`,`"embedded"`,`"layout"`\. Retrieve via`expand=\["images\_content\_metadata"\]`\.
{ “output_options”: { “images_to_save”: [“screenshot”, “embedded”] } }
### Printed page numbers
[Section titled “Printed page numbers”](https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#printed-page-numbers)
**API key:**`output\_options\.extract\_printed\_page\_number`\(singular\)\. Retrieve via`expand=\["metadata"\]`\.
Always generated — no input config\. Retrieve via`expand=\["output\_pdf\_content\_metadata"\]`\.
### Granular bounding boxes
[Section titled “Granular bounding boxes”](https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#granular-bounding-boxes)
Get per\-**word**, per\-**line**, and per\-**table\-cell**bounding boxes alongside the item\-level layout boxes Parse already returns\. Use this when you need to highlight individual words or lines on the source document \(e\.g\., a PDF viewer that highlights the exact span a citation points to\), or to ground extracted answers down to the glyph\.
**API key:**`output\_options\.granular\_bboxes`— array of one or more of`"word"`,`"line"`,`"cell"`\. Empty list \(default\) disables granular boxes; only item\-level layout boxes are returned\.
{ “output_options”: { “granular_bboxes”: [“word”, “line”, “cell”] } }
When`granular\_bboxes`is non\-empty, Parse writes a**grounded\-items JSONL sidecar**\(one row per page\) and includes a presigned download URL for it on the result\. You don’t need to add anything to`expand`— see[grounded items in Retrieving Results](https://developers.llamaindex.ai/llamaparse/parse/guides/retrieving-results/#grounded-items-content-metadata)for the response shape and the JSONL schema\.
For a complete walk\-through — request, sidecar fetch, and walking the per\-word/line/cell grounding — see the[Granular bounding boxes example](https://developers.llamaindex.ai/llamaparse/parse/examples/parse_granular_bboxes/)\.
**Tier limits:**not available on`fast`\(no item\-level layout, so granular grounding has nothing to attach to\)\.
### Webhook configurations
[Section titled “Webhook configurations”](https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#webhook-configurations)
Push results instead of polling\. For large PDFs, batch pipelines, or when the result goes to a different service\.
**API key:**`webhook\_configurations`— top\-level array\.
{ “webhook_configurations”: [{ “webhook_url”: “https://example.com/webhook”, “webhook_events”: [“parse.success”], “webhook_headers”: { “Authorization”: “Bearer your-token” } }]}
**Security:**use HTTPS, put auth tokens in`webhook\_headers`\(not query params\), verify the caller in your handler, never let untrusted users control`webhook\_url`\.
**API key:**`user\_metadata`— top\-level`dict\[str, str\]`\. Attach arbitrary key/value tags to a job; returned verbatim on the job response\. Not searchable\. Max 8 pairs, 24\-char keys, 64\-char values, 512 bytes total\.
{ “user_metadata”: { “owner”: “jerry”, “team”: “research” } }
---
## Processing options
[Section titled “Processing options”](https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#processing-options)
**Control how Parse processes your document**— flagship features, tuning knobs, and production controls\.
**Pay premium prices only on pages that need it\.**Routes each page to the right tier automatically: simple pages →`cost\_effective`, complex pages → your selected tier\. Both groups run in parallel\.
**API key:**`processing\_options\.cost\_optimizer`\. Available on`agentic`and`agentic\_plus`only\.
{ “processing_options”: { “cost_optimizer”: { “enable”: true } } }
**When to use:**mixed\-complexity documents where most pages are prose\.**When to skip:**every page is table\-heavy, you’re already on`cost\_effective`/`fast`, or you need exact reproducibility\.
Request`expand=\["metadata"\]`to see which pages were cost\-optimized \(`cost\_optimized: true/false`per page\)\.
### Specialized Chart Parsing
[Section titled “Specialized Chart Parsing”](https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#specialized-chart-parsing)
Extract chart/graph data as structured tables — bar heights, line values, pie percentages\.
**API key:**`processing\_options\.specialized\_chart\_parsing`— enum:`"efficient"`,`"agentic"`,`"agentic\_plus"`\.**Default\-on for Agentic Plus\.**Not available on`fast`\.
{ “processing_options”: { “specialized_chart_parsing”: “agentic_plus” } }
Retrieve chart data via`expand=\["items"\]`\. See the[chart parsing tutorial](https://developers.llamaindex.ai/llamaparse/parse/examples/parse_charts_pandas/)\.
### Confidence Score \(High Effort\)
[Section titled “Confidence Score \(High Effort\)”](https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#confidence-score-high-effort)
**Know how much to trust each parsed page\.**With`confidence\_score\_effort: "high"`, LlamaParse produces a more accurate assessment of parsing quality: each page’s`confidence`\(0→1\) in the result metadata reflects the high\-effort assessment, and the document gets an aggregate`confidence`with a breakdown \(worst page score, per\-label counts\) in the metadata`document`object\.
**API key:**`processing\_options\.confidence\_score\_effort`— enum:`"high"`\. Omit the option for standard scoring \(the default\)\. High effort costs an additional**5 credits per page**\.
{ “processing_options”: { “confidence_score_effort”: “high” } }
Request`expand=\["metadata"\]`to read the per\-page and document\-level scores\.
Steer the parser with natural\-language instructions — focus on specific content, preserve formats, give document context\.
**API key:**`agentic\_options\.custom\_prompt`\(not`processing\_options`\)\. Available on`cost\_effective`,`agentic`,`agentic\_plus`\.**Not on`fast`\.**
{ “agentic_options”: { “custom_prompt”: “This is a financial report. Preserve all currency symbols.” } }
**Tips:**be specific, name the document type, say what to skip, specify output format, keep it short \(2–3 sentences\)\. For guaranteed structured extraction with a schema, use[LlamaExtract](https://developers.llamaindex.ai/llamaparse/extract/getting_started/)instead\.
### Skipping content patterns
[Section titled “Skipping content patterns”](https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#skipping-content-patterns)
**API key:**`processing\_options\.ignore`\.
FlagSkips`ignore\_diagonal\_text`Watermarks \(`CONFIDENTIAL`,`DRAFT`\)`ignore\_text\_in\_image`Low\-quality OCR text in embedded images`ignore\_hidden\_text`White\-on\-white or CSS\-hidden text**API key:**`processing\_options\.ocr\_parameters\.languages`\. Only affects text from images — native text in born\-digital PDFs is read directly\.
{ “processing_options”: { “ocr_parameters”: { “languages”: [“en”, “fr”, “de”] } } }
FlagWhat it does`aggressive\_table\_extraction`Try harder to find tables \(may add false positives\)`disable\_heuristics`Turn off outlined\-table extraction and adaptive long\-table handling### Timeouts and failure conditions
[Section titled “Timeouts and failure conditions”](https://developers.llamaindex.ai/llamaparse/parse/guides/configuring-parse/#timeouts-and-failure-conditions)
**API key:**`processing\_control`— top\-level \(not under`processing\_options`\)\.
**Timeouts:**`base\_in\_seconds`\+ \(`extra\_time\_per\_page\_in\_seconds`× page count\)\.
**Failure conditions:**`allowed\_page\_failure\_ratio`,`fail\_on\_image\_extraction\_error`,`fail\_on\_image\_ocr\_error`,`fail\_on\_markdown\_reconstruction\_error`,`fail\_on\_buggy\_font`\.
{ “processing_control”: { “timeouts”: { “base_in_seconds”: 300, “extra_time_per_page_in_seconds”: 30 }, “job_failure_conditions”: { “allowed_page_failure_ratio”: 0.05 } }}
---
- [Tiers](https://developers.llamaindex.ai/llamaparse/parse/guides/tiers/)— credit costs, tier comparison, version pinning
- [Retrieving Results](https://developers.llamaindex.ai/llamaparse/parse/guides/retrieving-results/)— the`expand`parameter and what comes back
- [Recipes](https://developers.llamaindex.ai/llamaparse/parse/guides/recipes/)— copy\-pasteable snippets
- [API reference](https://developers.llamaindex.ai/reference/resources/parsing/methods/create)— full field\-by\-field listing
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/
Similar Articles
@jerryjliu0: We built revision tracking in LlamaParse You can now extract Word-style tracked changes and reviewer comments as additi…
LlamaParse has added revision tracking to extract Word-style tracked changes and reviewer comments as structured metadata, enabling AI agents to access a document's full revision history for enhanced collaboration in industries like legal and finance.
@llama_index: LiteParse v2.1 is here, and its bringing the fastest markdown output possible. In this release, we are fulfilling our t…
LiteParse v2.1 is released, delivering the fastest LLM-free PDF-to-markdown conversion with top benchmark scores among model-free tools.
@itsclelia: Do you actually own your document parsing infrastructure? At @llama_index, we wanted to make that easier, so we built �…
LlamaIndex introduces liteparse-server, an open-source, self-hosted HTTP backend for parsing PDFs, images, and Office documents with spatial layout extraction, OCR, and screenshot generation, designed for AI and data workflows.
@llama_index: Most AI pipelines are only as good as the data we provide them with, and that usually means PDFs or other unstructured …
Parse-Flow is an open-source visual workflow designer built by LlamaIndex that chains four document processing primitives—Parse, Classify, Split, and Extract—into a drag-and-drop canvas powered by LlamaAgents workflows, enabling reliable structured data extraction from unstructured enterprise documents like PDFs, contracts, and invoices.
@jerryjliu0: It's kind of crazy how well LiteParse does on markdown document parsing even compared against frontier VLMs - when it d…
LiteParse is a fast, open-source document parser that outperforms some frontier VLMs on markdown parsing without using AI models. It is available in multiple languages and platforms, and is developed by LlamaIndex.