DocVert API
Automate conversions with a simple, job-based API. The recommended flow is the Job Builder endpoint (modeled after FreeConvert’s convert-files flow): create a process job, upload inputs, then poll for a signed download URL.
Authentication
Requests can be authenticated with either a JWT (browser sessions) or an API key (recommended for server-to-server automation).
Create an API key in Dashboard → API Keys.
# Option A: X-API-Key header
curl -H "X-API-Key: dv_sk_..." "https://api.docvert.com/tools"
# Option B: Authorization header (API keys are accepted as Bearer tokens too)
curl -H "Authorization: Bearer dv_sk_..." "https://api.docvert.com/tools"Anonymous usage is supported for some endpoints; anonymous process jobs return a token that must be passed back when polling.
Job Builder (convert-files)
This is the simplest integration: define a small task graph, upload input files, and poll until the export task contains a signed URL.
# 1) Create a process job (one import, one convert, one export)
curl -sS "https://api.docvert.com/v1/process/jobs" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer dv_sk_..." \
-d '{
"tasks": {
"import-1": { "operation": "import/upload" },
"convert-1": {
"operation": "convert",
"input": "import-1",
"input_format": "pdf",
"output_format": "docx",
"options": {}
},
"export-1": { "operation": "export/url", "input": "convert-1" }
}
}'The response contains a list of tasks. For each import/upload task, you’ll get a form with an upload URL and a short-lived upload token.
# 2) Upload the input file using the task form (multipart)
# - form.url: "/v1/process/jobs/<jobId>/tasks/<taskId>/upload"
# - form.parameters.token: "<uploadToken>"
curl -sS "https://api.docvert.com/v1/process/jobs/<jobId>/tasks/<taskId>/upload" \
-F "file=@./input.pdf" \
-F "token=<uploadToken>"Once all inputs are uploaded, DocVert automatically enqueues the conversion. Poll the process job until the export task is finished.
# 3) Poll job status
curl -sS "https://api.docvert.com/v1/process/jobs/<jobId>" \
-H "Authorization: Bearer dv_sk_..."When finished, the export task returns a signed URL in tasks[].result.files[0].url.
Tool discovery
Use tools to discover available conversions and supported formats. Conversion tools are generated from the configured engines.
# List enabled tools
curl -sS "https://api.docvert.com/tools"
# Get details for a specific tool (e.g. pdf-to-docx)
curl -sS "https://api.docvert.com/tools/pdf-to-docx"Looking for a specific conversion? For many converters the tool slug follows the pattern <src>-to-<dst> (example: pdf-to-docx).
Legacy Jobs API
The legacy flow uses presigned uploads and a separate job creation step. It’s still supported, but Job Builder is usually simpler.
# 1) Create a presigned upload (creates a pending input file record)
curl -sS "https://api.docvert.com/files/presign" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer dv_sk_..." \
-d '{
"toolSlug": "pdf-to-docx",
"filename": "input.pdf",
"mimeType": "application/pdf",
"sizeBytes": 123456
}'
# 2) Upload to the returned uploadUrl (PUT to S3/MinIO)
# 3) Mark upload complete (runs malware scanning / readiness checks)
curl -sS "https://api.docvert.com/files/complete" \
-H "Content-Type: application/json" \
-d '{ "fileId": "<fileId>" }'
# 4) Create a conversion job
curl -sS "https://api.docvert.com/jobs" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer dv_sk_..." \
-d '{
"toolSlug": "pdf-to-docx",
"inputFileIds": ["<fileId>"],
"parameters": {}
}'
# 5) Poll job status
curl -sS "https://api.docvert.com/jobs/<jobId>"Errors & rate limits
Error responses may include an errorCode and structured details for programmatic handling (for example: file size limits, conversion minute limits, or malware scan failures).
Common HTTP statuses:
- 400 invalid request / validation error
- 401 missing or invalid authentication
- 404 not found
- 429 rate/plan limit exceeded
- 503 transient upstream/service failure (retry later)