Just want to run a parse? The Quickstart walks through the submit-and-poll flow end to end in Python, JavaScript, and cURL.
/parse endpoint a document (PDF, image, spreadsheet, or Office document) and it returns the whole thing broken into labeled layout regions: paragraphs, tables, figures, titles, captions, list items, headers, and footers. Tables stay in one piece, and reading order is preserved across multi-column layouts. That makes parsing the right operation for loading documents into a search index, an embedding store for RAG, or a long-term archive.
For pulling specific fields out by name (invoice totals, contract dates, lab values), use Extraction instead.
Parsing a spreadsheet? Excel workbooks have their own pipeline and endpoint; see Excel Parsing. Submitting a
.xls/.xlsx to /parse returns a 400 pointing you to POST /parse/excel.From a Dense Fund Filing to Structured Markdown
The page below is a real document we ran through/parse: a Schedule of Investments from the Calamos mutual funds’ 2023 annual report. It’s the kind of page standard parsers choke on, with two columns of holdings, each split into nested sub-tables (convertible bonds, sector-grouped preferred stocks, a government security, purchased options, and two forward foreign-currency-contract tables), threaded with footnote symbols, subtotals, and running totals. The filing also ships with a scrambled embedded text layer, so we parse it with ocr_strategy=force_ocr to take the text from OCR of the rendered page instead of the corrupt layer. The layout model handles the column structure itself: it detects the two columns and orders segments top to bottom within each, and for layouts that still come back out of order, the enhance_reading_order parameter re-sorts the segments explicitly. Parsing returns each column as its own table, with the sector groups, footnote markers, and totals intact.

What a Parse Returns
A successful parse organizes the document into chunks, each containing an array of segments:- A segment is a single labeled layout region: one paragraph, one table, one image. Each segment carries a bounding box, a
segment_type(Text,Table,Picture, and others), a confidence score, and the region rendered as Markdown, HTML, and plain text. Tables and pictures also include word-level OCR boxes and a signed image URL for the cropped region. - A chunk groups one or more adjacent segments and includes an
embedfield with the chunk’s Markdown rolled into one string, ready to drop straight into a vector store.
segment_type values.
How a Parse Job Works
/parse is asynchronous. You submit the document and get back a job_id, then poll GET /parse/{job_id} until the status is Succeeded. Behind the scenes the parser runs OCR on every region, classifies each region’s type with a vision model, and reconstructs the reading order across the page.
The Quickstart walks through the submit-and-poll flow in Python, JavaScript, and cURL. If your documents live in cloud storage (S3, GCS, Azure Blob, Supabase), you can skip the upload step and point /parse at a presigned URL instead.
Dig Deeper
Element Types
The full list of
segment_type values the parser returns.Response Format
The canonical response shape with a field-by-field reference.
Processing Modes
Preset parameter bundles (Fast, Accurate, Agentic Lite, Agentic) and the parameters they set.
Presigned URLs
Parse documents straight from cloud storage.
Excel Parsing
The dedicated
/parse/excel endpoint for .xls and .xlsx workbooks.
