curl --request POST \
--url 'https://api.pardocs.com/v1/documents/extract?include_coordinates=true' \
--header 'x-api-key: <api-key>' \
--form 'file=@/path/to/document.pdf' \
--form 'template_ids=["gAWADq4aB"]'
import requests
url = "https://api.pardocs.com/v1/documents/extract"
params = {"include_coordinates": True}
headers = {"x-api-key": "<api-key>"}
files = {"file": open("/path/to/document.pdf", "rb")}
# Send template_ids as form field (e.g. JSON string or repeated key depending on client)
data = {"template_ids": ["gAWADq4aB"]}
response = requests.post(url, headers=headers, params=params, files=files, data=data)
print(response.json())
{
"ocr": "<array>",
"markdown": "<string>",
"result": [
{
"document_type": "<string>",
"pages": [
123
],
"properties": {}
}
]
}{
"detail": "<string>"
}Documents API
Extract from File or URL
POST
/
v1
/
documents
/
extract
curl --request POST \
--url 'https://api.pardocs.com/v1/documents/extract?include_coordinates=true' \
--header 'x-api-key: <api-key>' \
--form 'file=@/path/to/document.pdf' \
--form 'template_ids=["gAWADq4aB"]'
import requests
url = "https://api.pardocs.com/v1/documents/extract"
params = {"include_coordinates": True}
headers = {"x-api-key": "<api-key>"}
files = {"file": open("/path/to/document.pdf", "rb")}
# Send template_ids as form field (e.g. JSON string or repeated key depending on client)
data = {"template_ids": ["gAWADq4aB"]}
response = requests.post(url, headers=headers, params=params, files=files, data=data)
print(response.json())
{
"ocr": "<array>",
"markdown": "<string>",
"result": [
{
"document_type": "<string>",
"pages": [
123
],
"properties": {}
}
]
}{
"detail": "<string>"
}The Extract from File or URL endpoint runs extraction on a document you send in the same request—either as an uploaded file or via a URL. No document is stored in ParDocs; you get OCR, markdown, and extracted results back immediately. Use this when you want to process a document once without creating a document record.
Query Parameters:
Response
The response is a single object with:
include_coordinates(boolean, optional): Whentrue, each extracted field inresultincludes the source location:value,page, andbounding_box_coordinates(normalized[x1, y1, x2, y2]). Default isfalse.force_exclusive_template(boolean, optional): Whentrue, the first template’s document type is used for the entire document instead of auto-splitting by type. Default isfalse.document_layout_analysis(boolean, optional): Whentrue, layout analysis is run before reading (useful for complex or table-heavy documents). Default isfalse.
file(binary, optional): The document file to extract from. Provide eitherfileorurl, not both.url(string, optional): The URL of the document to extract from. Provide eitherfileorurl, not both.template_ids(array of strings, required): List oftemplate_ids used for splitting and extraction.
curl --request POST \
--url 'https://api.pardocs.com/v1/documents/extract?include_coordinates=true' \
--header 'x-api-key: <api-key>' \
--form 'file=@/path/to/document.pdf' \
--form 'template_ids=["gAWADq4aB"]'
import requests
url = "https://api.pardocs.com/v1/documents/extract"
params = {"include_coordinates": True}
headers = {"x-api-key": "<api-key>"}
files = {"file": open("/path/to/document.pdf", "rb")}
# Send template_ids as form field (e.g. JSON string or repeated key depending on client)
data = {"template_ids": ["gAWADq4aB"]}
response = requests.post(url, headers=headers, params=params, files=files, data=data)
print(response.json())
ocr: Array of OCR output per page.markdown: Full document text as markdown.result: Array of split sections. Each item hasdocument_type,pages, andproperties(the extracted key–value pairs for that section).
include_coordinates=true, each value in properties is an object with value, page, and bounding_box_coordinates (normalized [x1, y1, x2, y2]) instead of a plain string or number, so you can map each field back to a region on the document.Authorizations
Query Parameters
When true, each extracted field in result includes value, page, and normalized bounding_box_coordinates [x1, y1, x2, y2] (0–1) for the source region in the document.
When true, force the first template's document_type for the whole document instead of auto-splitting by type.
When true, run layout analysis before reading (e.g. for complex or table-heavy documents).
Body
multipart/form-data
Response
Successful Response. Returns ocr, markdown, and result (array of { document_type, pages, properties }). When include_coordinates=true, each property value is an object with value, page, and bounding_box_coordinates.

