TL;DR
A single options object controls the shape of a DPT-3 parse response. Every knob is optional — omit a key and it falls back to its default:
pages— choose which 1-indexed pages Parse processes.blocks.table.format—"html"(keeps merged cells) or"markdown"(flat pipes).blocks.<type>.markdown— drop a block type's text from the markdown string while keeping it in the tree.atomic_grounding— keep or drop the per-line bounding boxes.inline_markdown— attach each block's own Markdown slice to its structure node.
options shapes what comes back — not what Parse reads.
Video Walkthrough
A guided tour of the options parameter and each knob:
One Options Object
Every parse request takes a model and an options object. The document and model determine what Parse reads; options determines what it returns:
POST /v2/parse
model: dpt-3-pro-latest
options: {
pages,
atomic_grounding,
inline_markdown,
blocks.<type>.markdown,
blocks.table.format
}The output is always the same three fields — markdown, structure, and metadata — but options shapes each one.
Parse Returns Three Things
Before tuning the output, it helps to remember what a parse returns:
markdown— the whole document as one reading-order Markdown string.structure— a hierarchical tree of blocks, each carrying its grounding.metadata— job details:model_version,page_count,range_units, and more.
Every options knob adjusts one of these three fields.
Every Knob Is Optional
Start from defaults and change one thing at a time. Omit a key → you get its default:
| Option | Default |
|---|---|
pages | all pages |
blocks.<type>.markdown | true |
blocks.table.format | "html" |
atomic_grounding | true |
inline_markdown | false |
pages — Read What You Need
Pass a 1-indexed array to choose which pages Parse processes:
{ "pages": [1, 3] }Page 2 is skipped. metadata.page_count reflects the pages processed, and structure.children contains only [page 1, page 3].
Table Format — HTML vs. Markdown
blocks.table.format decides whether merged-cell structure survives:
"html"(default) — merged structure kept intact. A header like Measured Value (V) can span two columns viacolspan/rowspan."markdown"— flattened to plain pipes. The spanning header is lost because Markdown tables can't merge cells.
{ "blocks": { "table": { "format": "markdown" } } }Rule of thumb: use HTML when structure matters — it keeps colspan / rowspan; Markdown does not.
Drop a Block's Content
Set a block type's markdown to false to trim its text from the markdown string — without deleting it from the map:
{ "blocks": { "figure": { "markdown": false } } }The figure's text is trimmed from the markdown string, but the block stays in structure — it remains in the tree with a zero-length range and an empty atomic_grounding: []. You lose the content in the string but keep the block's location and type.
atomic_grounding — Line Boxes
By default every leaf block carries one outer box plus one small box per rendered line in atomic_grounding[]. Turn it off to shrink the payload:
{ "atomic_grounding": false }The per-line array is dropped, but the block's own grounding box (page + box) is still kept.
inline_markdown — Text On the Block
Set inline_markdown: true to attach each block's own Markdown slice directly to its structure node:
{ "inline_markdown": true }Every node — document, page, and block — then carries its own markdown slice:
{
"type": "text",
"id": "text-0",
"grounding": {
"page": 1,
"range": { "start": 0, "end": 27 },
"box": { "xmin": 0.080, "ymin": 0.021, "xmax": 0.740, "ymax": 0.060 }
},
"markdown": "**Report No.** TVL-CAL-7731"
}Note: atomic_grounding entries have no markdown of their own — slice by their range or read the parent block's markdown.
Turn One Knob at a Time
Every dial rests at its default. The reliable workflow: start from defaults, move a single option, and re-run.
| Option | Default → change |
|---|---|
pages | null (all pages) |
atomic_grounding | true |
inline_markdown | false |
blocks.<type>.markdown | true |
blocks.table.format | html → markdown |
Remember: options shapes what comes back, not what Parse reads.
Getting Started
- Read the documentation — full reference for the Parse API and every option.
- Try the playground — tune the options on your own document and watch the response change.
