Skip to main content
Parse is Reducto’s foundational endpoint. It converts documents into structured JSON by running OCR, detecting layout (headers, paragraphs, tables, figures), and organizing content into chunks ready for LLM consumption, RAG pipelines, or downstream extraction. Each element includes its type, page position, and confidence score. Parse handles multi-column text, nested tables, forms with handwriting, rotated pages, and documents mixing text with charts and images, using agentic VLM multipasses to correct errors on difficult content.
Try it live: See Parse in action with a sample bank statement in Reducto Studio.
File size limits: Upload files up to 100MB directly via the Upload endpoint, or up to 5GB via presigned URL. You can also pass public URLs or presigned S3/GCS/Azure URLs directly.

Quick Start


What You Get Back

Key fields:

Response Format Details

Full breakdown of chunks, blocks, bounding boxes, and confidence scores.

Input Options

The input field accepts four formats:
  1. Upload response (reducto://...): After uploading via /upload, use the returned file_id. This is the most common method for local files.
  2. Public URL: Any publicly accessible URL. Reducto fetches the file directly.
  3. Presigned URL: S3, GCS, or Azure Blob presigned URLs work. Useful when files are in your cloud storage.
  4. Previous job ID (jobid://...): Reprocess a document from a previous parse job without re-uploading. Useful for testing different configurations.

Sync vs Async

Parse has both synchronous (/parse) and asynchronous (/parse_async) endpoints. Use async for large documents or when you need webhook delivery.

Sync vs Async Guide

When to use each, how priority works, webhook setup.

Configuration

Parse has several configuration groups. Here are the most commonly changed options:

Chunking

By default, Parse returns the entire document as one chunk. For RAG applications, you want smaller chunks that can be embedded and retrieved independently.
Full chunking options →

Table Output Format

Controls how tables appear in the output.
Full table format options →

Figure Summaries

By default, Parse uses a vision model to generate descriptions for figures and images. This helps with RAG (the embed field contains the description) but adds latency.

Agentic Mode

Uses an LLM to review and correct parsing output. Adds latency with additional credit usage. Enable it when:
  • scope: "text": Handwritten text, faded scans, documents with unusual fonts, or when you see garbled characters in the output.
  • scope: "table": Tables with misaligned columns, merged cells that didn’t parse correctly, or numbers that appear in wrong columns.
  • scope: "figure": Charts and graphs that need data extraction, including advanced chart extraction with structured data output.
Don’t enable for clean digital PDFs (native text, not scanned). They parse correctly without it and you’ll just add latency.

Filter Blocks

Remove specific content types from the output. The blocks still appear in blocks metadata but are excluded from content and embed.
Useful for RAG when headers/footers would pollute search results.

Page Range

Process only specific pages.

Return Images

Get image URLs for figures and tables in the document.
Options: ["figure"], ["table"], or ["figure", "table"]. By default, no images are returned.

Additional Settings

For complete configuration reference including OCR settings, spreadsheet options, and more, see the Configuration section.

Troubleshooting

Try formatting.table_output_format: "html". HTML handles merged cells and complex headers better than Markdown.Still broken? Enable enhance.agentic: [{"scope": "table"}] to use an LLM for alignment fixes.
Main causes:
  • enhance.agentic can add latency with higher accuracy
  • enhance.summarize_figures adds latency with figures
  • Large documents take longer linearly
  • async_priority should be True for faster priority processing
For fastest processing, disable what you don’t need. See Best Practices.
Large documents return result.type: "url" instead of inline content to avoid HTTP size limits. Fetch the content:
To always get a URL (consistent handling): settings.force_url_result: true

Next Steps

Response Format

Full breakdown of chunks, blocks, and bounding boxes.

Best Practices

Optimization by document type, latency tips.