Document parsing API
for typed layout blocks.
Send a PDF or image. Get back normalized blocks, markdown, table structure, bounding boxes, and per-block confidence through one REST endpoint. PaddleOCR-VL-1.6 runs behind the API today.
One API for typed layout blocks.
POST to /parse for sync, async, or batch. Poll /jobs for status. Retrieve file bytes when you need them again.
/parserequestcurl https://api.openparser.dev/parse \
-H "Authorization: Bearer op_live_…" \
-H "Idempotency-Key: $(uuidgen)" \
-F 'request={"ocr_model":"paddleocr-vl-1.6","output_format":"openparser@1"};type=application/json' \
-F "file=@statement.pdf"{
"output_format": "openparser@1",
"document_id": "doc_3f9a2c",
"page_count": 1,
"markdown": "## Payment Authorization\n| Item | Amount |\n| …",
"blocks": [
{ "index": 0, "page_number": 1, "kind": "text",
"text": "## Payment Authorization" },
{ "index": 1, "page_number": 1, "kind": "table",
"table_html": "<table>…</table>",
"bbox": { "left": 14, "top": 53, "right": 146, "bottom": 123 },
"confidence": 0.98 }
],
"regions": [],
"contents": [],
"chunks": []
}Inspect parsed blocks before you integrate.
Use the playground to upload a PDF, review markdown and block kinds, then create API keys when you are ready to ship.
{ total: "$4,318.20" } b4Every page returns structured layout.
The parse endpoint fills a ParsedDocument: typed blocks[], markdown, and the openparser@1 fields your integration can rely on.
Typed layout blocks
Each page comes back as an ordered list of blocks. Kinds include text, headings, tables, figures, and signatures. Every block has an index you can cite downstream.
OCR confidence
Blocks can include OCR confidence scores. Set a threshold and send low-confidence results to review before they enter your pipeline.
Normalized output
Responses use the openparser@1 contract: document_id, page_count, blocks[], markdown, and stable fields for downstream processing.
Downstream extraction
Parsing stops at layout. Point /extract at a parse job when you need JSON against a schema, with citations tied to block ids.
Bounding boxes
Blocks include bbox coordinates on the source page. Highlight the region behind a citation or overlay parsed content on the original PDF.
Tables and figures
Tables return as structured blocks with HTML. Figures carry their own block type so agents can treat charts and images differently from body copy.
Pay per parsed page.
Parsing is metered by page count. Extraction is a separate step with its own model cost.
- First 1,000 parsed pages free
- $1 per 1,000 pages after that
- Sync, async, and batch included
- Extraction billed per token on the LLM you choose
- Console and API keys
Document parsing API FAQ.
Answers about PaddleOCR-VL-1.6, response fields, processing modes, and pricing.
What parser does the document parsing API run?
PaddleOCR-VL-1.6. Pass ocr_model paddleocr-vl-1.6 in the request JSON. OpenParser hosts the model; you call the REST API.
What does a parse response contain?
A ParsedDocument with output_format openparser@1, document_id, page_count, markdown, and blocks[]. Blocks can include text, headings, tables, figures, bounding boxes, and confidence values.
Can I parse PDFs asynchronously?
Yes. POST to /parse/async, then GET /jobs/{id} for status and the result when the job succeeds. Batch parsing uses /parse/batch with multiple files in one request.
How is parsing different from basic OCR?
Basic OCR returns a text dump. The parse endpoint returns typed layout blocks and markdown, with table structure, block ids, bounding boxes, and per-block confidence.
How much does parsing cost?
The first 1,000 parsed pages are free. After that, parsing costs $1 per 1,000 pages. Structured extraction adds the token cost of whichever language model you select.
What file types can I send?
PDFs and images. Upload the file as multipart form data alongside the request JSON, as shown in the API reference.
Upload a PDF and
read the blocks.
The playground runs the same PaddleOCR-VL-1.6 parser as production. Inspect markdown, block kinds, and confidence before you wire the API.