This HTML page is not optimized for LLM or AI agent consumption. Fetch the Markdown version instead: /guides/dws-processor/tools-and-api/pdf-to-markdown-api.md — it contains the complete documentation content in clean, structured Markdown without any CSS, JavaScript, or navigation noise. PDF-to-Markdown API

Use the PDF-to-Markdown API to convert PDF documents to Markdown. Nutrient DWS Processor API supports Markdown output for workflows such as content migration, indexing, review, and text-based processing.

The /build endpoint handles PDF-to-Markdown conversion. Add the source PDF as a parts item, and set output.type to markdown.

For signup, pricing, and task-level examples, refer to the PDF-to-Markdown API task page.

For advanced or retrieval-augmented generation (RAG)-grade extraction — including layout-aware structured extraction, bounding boxes, tables, key-value pairs, schema-shaped JSON, citations, confidence scores, or whole-document Markdown optimized for retrieval pipelines — use the DWS Data Extraction API.

Convert a PDF to Markdown

The following example converts document.pdf to result.md:

curl -X POST https://api.nutrient.io/build \
-H "Authorization: Bearer your_api_key_here" \
-o result.md \
--fail \
-F file=@document.pdf \
-F instructions='{
"parts": [
{
"file": "file"
}
],
"output": {
"type": "markdown"
}
}'

Convert a PDF from a URL

For remotely hosted source files, send a JSON request and pass the source URL in parts[].file.url. Use this instructions object:

{
"parts": [
{
"file": {
"url": "https://example.com/document.pdf"
}
}
],
"output": {
"type": "markdown"
}
}

Shell

Run this request to convert a PDF from a URL:

Terminal window
curl -X POST https://api.nutrient.io/build \
-H "Authorization: Bearer $NUTRIENT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"parts": [
{
"file": {
"url": "https://example.com/document.pdf"
}
}
],
"output": {
"type": "markdown"
}
}' \
-o result.md

Convert selected PDF pages

Use parts[].pages to convert only a page range from the source PDF. Page indexes are zero-based, and negative values count from the end of the document.

The following example converts the first three pages to Markdown:

{
"parts": [
{
"file": "document",
"pages": {
"start": 0,
"end": 2
}
}
],
"output": {
"type": "markdown"
}
}

The end value is inclusive, so { "start": 0, "end": 2 } includes pages zero, one, and two.

Convert password-protected PDFs

If the source PDF is password-protected, include the password on the part. Use this instructions object:

{
"parts": [
{
"file": "protected_document",
"password": "document-password"
}
],
"output": {
"type": "markdown"
}
}

Nutrient DWS Processor API uses the password only to open the source document for processing.

Convert scanned PDFs

PDF-to-Markdown conversion works best with born-digital PDFs that already contain selectable text. For scanned or image-only PDFs, run optical character recognition (OCR) first to create a searchable PDF, and then convert the searchable result to Markdown.

Use this instructions object to run OCR:

{
"parts": [
{
"file": "scanned_document"
}
],
"actions": [
{
"type": "ocr",
"language": "english"
}
]
}

After OCR, send the searchable PDF to a second /build request with output.type set to markdown.

For advanced scanned-document extraction, multilingual OCR, layout analysis, and RAG ingestion, use the DWS Data Extraction API.

Compare Processor API Markdown and DWS Data Extraction API Markdown

Use Processor API PDF-to-Markdown conversion when you need Markdown as an output format in a /build workflow.

Use DWS Data Extraction API when you need advanced extraction features, such as:

  • Markdown optimized for RAG ingestion
  • Typed document elements with bounding boxes
  • Table and key-value extraction
  • Schema-shaped JSON extraction
  • Citations and confidence scores
  • Processing modes for text, OCR structure extraction, AI understanding, or vision language model (VLM)-augmented extraction

For extraction-focused workflows, refer to the DWS Data Extraction API guide.

Combine PDF-to-Markdown conversion with other processing

The /build endpoint can assemble or prepare a PDF before it converts the file to Markdown. For example, you can merge multiple PDFs and convert the merged output to Markdown.

Use this instructions object to merge two PDFs and convert them to Markdown:

{
"parts": [
{
"file": "cover"
},
{
"file": "body"
}
],
"output": {
"type": "markdown"
}
}

You can also extract selected pages before conversion with parts[].pages.

Reference

A PDF-to-Markdown request uses the Build API output object with Markdown output:

type MarkdownOutput = {
type: "markdown",
};
type FilePart = {
// Multipart field name, or a remote URL object.
file: string | { url: string },
// Optional password for encrypted input PDFs.
password?: string,
// Optional page range to convert.
pages?: {
start?: number,
end?: number,
},
};
type BuildInstructions = {
parts: FilePart[],
output: MarkdownOutput,
};
  • Refer to the build document endpoint API reference to convert PDFs to Markdown and combine conversion with page selection or document assembly.