Document Parsing
Parses a document into typed, positioned elements with the AI document parser.#
/lmkit/v1/document-parsingParses a PDF, a scan or an image with the AI document parser: every page becomes a list of elements in reading order, each with its role (title, text, table, formula, figure, caption, header, footer), its bounding box, its confidence and its typed content: tables as HTML with their spans, formulas as LaTeX, and charts as the data table they plot. One setting, 'effort' (Low, Medium, High), trades time for fidelity; the parser selects and verifies its own models. The result is returned as lossless JSON (default, parsed-document schema v1), Markdown, semantic HTML or DocLang. With 'include_figure_images', the picture of every figure is embedded too. With 'include_markdown' and 'Json', the response also carries the Markdown of the same parse for the document, each page and each element. This endpoint runs vision models on every page and is slower than document-to-markdown, which stays the fast path for text-layer documents. If processing exceeds the configured timeout, returns 202 Accepted with a job_id. Poll GET /lmkit/v1/jobs/ for status and results.
Request body
application/json ·
| Property | Type | Description |
|---|---|---|
inputrequired | string | The document to parse: a PDF, a scan or an image. When input_format is 'Base64EncodedFile', provide a base64-encoded file payload. When 'FileIdentifier', provide the file ID previously returned by the api/v1/files/upload endpoint. |
input_format | How the input is provided: 'Base64EncodedFile' (default) or 'FileIdentifier'. | |
effort | How much work the parser puts into each page. 'Minimal' loads no model: the text each page carries, with OCR for scans; 'Low' is the fastest level that reads with the model, for high-volume ingestion; 'Medium' (default) balances time and fidelity; 'High' gives the most faithful result, where every table, chart and heading counts. The parser selects and verifies its own models for each level. | |
pages | string | An optional 1-based page range to parse (e.g. "1-3", "1,3,5", "2-"). When empty, every page is parsed. |
output_format | The format of the result. 'Json' (default) returns the lossless parsed document in 'document'; 'Markdown', 'Html' and 'DocLang' return the rendering as text in 'content'. | |
include_figure_images | boolean | When true, the picture of every figure and chart is cut from the page and embedded in the result (base64 PNG in the JSON, data URIs in HTML and DocLang). Adds one page render per page that holds a figure. Defaults to false. |
include_markdown | boolean | With output_format 'Json' only: when true, the response also carries the Markdown rendering of the same parse, for the document ('markdown'), each page ('page_markdown') and each element ('element_markdown'), aligned with the pages and elements of 'document'. The structure and its rendering then come from one parse. Defaults to false. |
Responses
| Status | Type | Description |
|---|---|---|
| 200 | OK | |
| 202 | Accepted | |
| 400 | Bad Request | |
| 404 | Not Found | |
| 500 | application/json | Internal Server Error |
curl -X POST "$LMKIT_ONE_URL/lmkit/v1/document-parsing" \
-H "Authorization: Bearer $LMKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": "",
"input_format": "Base64EncodedFile",
"effort": 1,
"pages": "",
"output_format": 0
}'