Reference
PDF to Word
The PDF-to-Word lane keeps the current multipart upload contract while reusing the same auth, queued job lifecycle, and download flow as the rest of the API.
Reference
Reference
Endpoint Reference
POST/v1/pdf/to-word
Queue a PDF-to-DOCX conversion using the existing multipart service contract through the shared gateway.
Auth
Bearer token required.
Idempotency
Supports optional Idempotency-Key replay protection and upload digest hints.
Content Type
multipart/form-data
Headers
| Name | Type | Required | Location | Description |
|---|---|---|---|---|
| Authorization | Bearer <API_KEY> | Yes | header | User-owned API key created in the DocuShell dashboard. |
| Idempotency-Key | string | No | header | Recommended for safely retrying submit requests without creating duplicate jobs. |
| X-File-Name | string | No | header | Optional idempotency and metadata hint for uploaded files. |
| X-File-Size | integer | No | header | Optional caller-declared byte size. |
| X-File-SHA256 | string | No | header | Optional digest used when deduplicating retries. |
Request Fields
| Name | Type | Required | Location | Description |
|---|---|---|---|---|
| file | file | Yes | multipart | Source PDF upload. |
| options | JSON string | No | multipart | Optional conversion settings such as ocr or output format. |
Request Notes
- The public lane passes the existing multipart request through to the internal converter, so the body shape matches the current service contract.
Convert to Word
bash
curl -X POST "https://api.docushell.com/api/v1/pdf/to-word" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Idempotency-Key: word-demo-001" \
-H "X-File-Name: contract.pdf" \
-F "file=@./contract.pdf;type=application/pdf" \
-F 'options={"ocr":false,"format":"docx"}'Try It Now
Console placeholder for safe sandbox execution.
Queued response
json
{
"job_id": "job_01JX8Y5YJ2M2D8N1AQ5F7Q3KVT",
"status": "queued",
"cost": 20,
"service": "pdf-to-word",
"request_id": "req_01JX8Y62XCDNZ2BM7TBM2M9Q8E",
"links": {
"status": "/v1/jobs/job_01JX8Y5YJ2M2D8N1AQ5F7Q3KVT",
"download": "/v1/jobs/job_01JX8Y5YJ2M2D8N1AQ5F7Q3KVT/download"
}
}Status response
json
{
"job_id": "job_01JX8Y5YJ2M2D8N1AQ5F7Q3KVT",
"status": "done",
"service": "pdf-to-word",
"request_id": "req_01JX8Y62XCDNZ2BM7TBM2M9Q8E",
"result": {
"filename": "quarterly-report.docx",
"sizeBytes": 184322,
"download": "/v1/jobs/job_01JX8Y5YJ2M2D8N1AQ5F7Q3KVT/download"
},
"completed_at": "2026-04-24T10:12:56.145Z",
"links": {
"status": "/v1/jobs/job_01JX8Y5YJ2M2D8N1AQ5F7Q3KVT",
"download": "/v1/jobs/job_01JX8Y5YJ2M2D8N1AQ5F7Q3KVT/download"
}
}Completed jobs return a public download link and keep the file streaming URL behind the gateway. Downloads use application/vnd.openxmlformats-officedocument.wordprocessingml.document.
Poll And Download
- Completed jobs stream one DOCX file from
GET /v1/jobs/:jobId/download. - See [Quickstart](/getting-started#queued-response) for the shared submit, poll, and download flow.
Failure Notes
- Missing uploads and invalid option payloads return
invalid_requeststyle failures before the job is queued. - Uploads larger than 1 GB are rejected before the worker handoff.
backend_unavailableindicates the converter was unreachable before the job could be accepted.
Upload too large
400invalid_requestThe public route enforces a hard 1 GB ceiling on uploads.
400 error
json
{
"error": {
"code": "invalid_request",
"message": "Upload exceeds maximum allowed size (1 GB).",
"type": "invalid_request_error",
"request_id": "req_01JX8Y62XCDNZ2BM7TBM2M9Q8E"
}
}