Send PDFs, images, Word documents, or PowerPoint files to /parse and get ordered Markdown chunks with layout segments and source coordinates. Use the dedicated /parse/excel endpoint for spreadsheets.
Parse converts documents into ordered Markdown chunks and layout-aware JSON. Each chunk contains segments for text, tables, figures, and headings, with coordinates that link the output to the source page.
Engineers building RAG pipelines, document agents, and search over messy enterprise files who need the structure that OCR throws away.
Flat OCR loses reading order and document structure. Parse preserves tables, section boundaries, and layout so downstream systems do not have to reconstruct the page from a stream of characters.
Use ordered Markdown chunks as retrieval units while retaining their source-page context.
Give agents structured content with segment labels and coordinates they can inspect and cite.
Preserve rows, headers, and form structure instead of flattening every element into plain text.
Read page pixels when an embedded text layer is missing or unreliable.
Figures are detected and captioned so downstream models know what a chart is showing.
Recover reading order so paragraphs do not run left-to-right across unrelated columns.
Tables, lists, and section hierarchy remain represented in the returned Markdown and segments.
Each chunk ships with word-level coordinates, so you can highlight, redact, or ground a citation back to the exact spot on the page.
The vision model reads content and layout together when a document has no usable embedded text.
Multi-column pages are re-threaded into natural reading order instead of streaming left-to-right across columns.
The submit-and-poll workflow lets document processing continue without holding an HTTP connection open.
Use parsed structure on its own or pass the result into downstream retrieval and automation workflows.
POST the file to /parse as multipart form data with your api-key header and capture the returned job ID.
The service detects text, tables, figures, headings, and their positions on each page.
GET /parse/{job_id} until the status is Succeeded. A Failed status includes an error message.
Read Markdown from each chunk’s segments[].markdown, with layout details on the same segments.
1 import os, time, requests 2 3 BASE = "https://prod.visionapi.unsiloed.ai" 4 HEADERS = {"api-key": os.environ["UNSILOED_API_KEY"]} 5 6 # 1. submit the document 7 with open("financial_report_q4.pdf", "rb") as file: 8 response = requests.post( 9 f"{BASE}/parse", headers=HEADERS,10 files={"file": file}11 )12 response.raise_for_status()13 job_id = response.json()["job_id"]14 15 # 2. poll for the parsed Markdown and layout16 for _ in range(60):17 response = requests.get(18 f"{BASE}/parse/{job_id}", headers=HEADERS)19 response.raise_for_status()20 result = response.json()21 if result["status"] == "Succeeded": break22 if result["status"] == "Failed":23 raise RuntimeError(24 result.get("message", "Parse failed"))25 time.sleep(5)26 else:27 raise TimeoutError("Parse did not finish in 5 minutes")28 29 for chunk in result["chunks"]:30 for segment in chunk["segments"]:31 print(segment.get("markdown") or segment.get("content", ""))Use the same submit-and-poll workflow from prototype through production. Page-based pricing starts with a free tier, with managed, VPC, on-premises, and air-gapped deployment options for larger workloads.
Read the docsuptime target on enterprise plans.
Parse uses the same authentication and billing as every other capability. Combine it with Parse, Extract, Split, and Classify, or call it on its own.
Tell us a little about your workflow and share a sample document.
We’ll use it to show you a structured output during the call.
The accuracy, especially on tables, is meaningfully better than anything we tested. We evaluated over 15 solutions and Unsiloed was the only one that worked reliably.
Head of AI
Fortune 150 Bank, NY