Document parsing API
Send a PDF or image to Paddle, Mistral, Azure, Google, or AWS Textract. The parse API returns normalized blocks, markdown, table structure, bounding boxes, and confidence when the selected model supports them.
POST /parse returns typed layout blocks
Call /parse, /parse/async, or /parse/batch. Poll /jobs for status. GET /files/{id}/content when you need the source bytes 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| --- | --- |\n| Total | $4,318.20 |",
"blocks": [
{
"index": 0,
"page_number": 1,
"kind": "text",
"text": "## Payment Authorization"
},
{
"index": 1,
"page_number": 1,
"kind": "table",
"table_html": "<table><tr><th>Item</th><th>Amount</th></tr><tr><td>Total</td><td>$4,318.20</td></tr></table>",
"bbox": {
"left": 14,
"top": 53,
"right": 146,
"bottom": 123
},
"confidence": 0.98
}
],
"regions": [],
"contents": [],
"chunks": []
}Inspect parsed blocks in the playground
Upload a PDF, review markdown and block kinds, then create API keys for POST /parse.
{ total: "$4,318.20" } b4ParsedDocument with typed layout blocks
POST /parse returns blocks[], markdown, and stable 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 one normalized 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.
Parsing bills by page count
Each ocr_model publishes a page rate. /extract bills separately by llm_model token usage.
- $10 credits at signup
- Open-weight hosted models from $1 per 1,000 pages
- Each ocr_model publishes its own page rate
- Sync, async, and batch included
- Extraction billed per token on the LLM you choose
- Console and API keys
Document parsing API FAQ
Nine ocr_model ids, ParsedDocument fields, sync/async/batch modes, and page pricing.
Which OCR models can the document parsing API run?
Choose from nine hosted models across Paddle, Mistral, Azure Document Intelligence, Google Document AI, and AWS Textract. Pass the model id in ocr_model on each parse request.
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?
New accounts get $10 in credits. Open-weight hosted models start at $1 per 1,000 pages; other OCR models publish their own per-page rates. Structured extraction adds the token cost of the 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.
Pick ocr_model and inspect blocks before you integrate
Upload a PDF, set ocr_model, and review markdown, block kinds, and confidence scores in Studio before you call POST /parse.