apyhub
FILE CONVERSION · FILE MANIPULATION

Convert PDF to Word Job API

Hosted on ApyHub

What it does

PDF to Word Converter turns PDF files into downloadable .docx outputs and tracks each conversion as a job. Send one or more PDF files in the files array, get back job records with job_id, filename, status, and progress, then poll for completion or download the finished document.

Use it when you need editable Word documents from uploaded PDFs: contract workflows, report reuse, manual editing, or content migration. The API is built around asynchronous jobs, so you can submit multiple files, keep track of progress per file, and handle longer conversions without blocking your app.

Check an individual job with GET /status/:job_id, which returns the job_id, status, progress, and an optional error string. For bulk workflows, GET /overall-status accepts job_ids and returns aggregate status, progress, details, total_files, and completed_files so you can show a unified progress view across many conversions.

When a job finishes, GET /download/:job_id returns the converted Word file as binary data. That makes PDF to Word Converter a straightforward fit for document pipelines that need a reliable handoff from PDFs to editable Word files.

Note: Pricing depends on page count and detected PDF type: native PDFs cost 2 atoms per page + 100, while scanned PDFs cost 5 atoms per page + 100.

▣ ENDPOINT 01 / 04
POST
Convert PDF files to Word (.docx)
http://localhost:8080/flowdocs/convert-pdf-to-word
QUICKSTARTGUIDE

Quickstart

Upload one or more PDF files to convert them into Word jobs.

curl -X POST "http://localhost:8080/flowdocs/convert-pdf-to-word" \
  -H "apy-token: $APY_TOKEN" \
  -F "files=@/path/to/report.pdf"

What you'll get back

Returns a JSON object with a jobs array. Each item in jobs is an object with job_id, filename, status, and progress fields.

{
  "jobs": [
    {
      "job_id": "a1b2c3d4",
      "filename": "report.pdf",
      "status": "queued",
      "progress": 0
    }
  ]
}
TRY ITLIVE · 100 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.
body*
files*
PDF files to convert to Word.

About this endpoint

What it does

Converts one or more PDF files into Word documents. The request uploads PDF files, and the response returns a JSON object containing a jobs array with one job entry per file.

Request Body

ParameterTypeMandatoryDescription
filesString ArrayYesPDF files to convert to Word. Each array item is a binary file. Max File Upload limit - 5

Response

Returns a JSON object with a jobs array. Each array item is an object containing job_id (string), filename (string), status (string), and progress (integer).

ParameterTypeMandatoryDescription
jobsObject ArrayYesArray of job objects returned for the submitted files.
jobs[].job_idStringYesJob identifier for the conversion task.
jobs[].filenameStringYesOriginal filename associated with the job.
jobs[].statusStringYesCurrent job status.
jobs[].progressIntegerYesCurrent progress value for the job.

Body

Name
Type
Description
bodyREQUIRED
object

Max 100MB total per request (all files combined). Larger? Use this API's URL-based endpoint instead, if it has one.

▣ ENDPOINT 02 / 04
GET
Get the status of a PDF-to-Word job
http://localhost:8080/flowdocs/convert-pdf-to-word/status/:job_id
QUICKSTARTGUIDE

Quickstart

Check the status of a PDF-to-Word conversion job by passing its job_id in the path.

curl -X GET "http://localhost:8080/flowdocs/convert-pdf-to-word/status/:job_id" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with job_id as a string, status as a string enum (queued, processing, done, or failed), progress as an integer from 0 to 100, and error as a nullable string.

{
  "job_id": "job_12345",
  "status": "processing",
  "progress": 60,
  "error": null
}
TRY ITLIVE · 1 ATOM
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Checks the status of a PDF-to-Word conversion job and returns the job identifier, current status, and progress percentage. The response may also include an error string when present.

Path Parameter(s)

AttributeTypeMandatoryDescription
job_idStringYesIdentifies the job to check.

Response

Returns a JSON object with job_id as a string, status as a string enum, and progress as an integer from 0 to 100. The response may also include an error string field, which is nullable.

AttributeTypeMandatoryDescription
job_idStringYesThe job identifier.
statusENUMYesCurrent job status. Allowed values: queued, processing, done, failed.
progressIntegerYesProgress percentage from 0 to 100.
errorStringNoError message, when present. Nullable.

Path parameters

Name
Type
Description
job_idREQUIRED
string
▣ ENDPOINT 03 / 04
GET
Download a finished PDF-to-Word output
http://localhost:8080/flowdocs/convert-pdf-to-word/download/:job_id
QUICKSTARTGUIDE

Quickstart

Download the converted Word file for a finished job by replacing job_id in the path.

curl -X GET "http://localhost:8080/flowdocs/convert-pdf-to-word/download/:job_id" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a binary file (string with format: binary) containing the downloaded document.

...file contents...
TRY ITLIVE · 10 ATOMS
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Downloads the converted Word file for a completed PDF-to-Word job. The request identifies the job by job_id in the path, and the response is a binary file.

Path Parameter(s)

AttributeTypeMandatoryDescription
job_idStringYesIdentifies the finished conversion job.

Response

Returns a binary response containing the downloaded Word output file. The output schema is a single string with binary format, so the successful response is the file content itself.

AttributeTypeMandatoryDescription
binaryStringYesThe downloaded file content as a binary payload.

Path parameters

Name
Type
Description
job_idREQUIRED
string
▣ ENDPOINT 04 / 04
GET
Aggregate progress across PDF-to-Word jobs
http://localhost:8080/flowdocs/convert-pdf-to-word/overall-status
QUICKSTARTGUIDE

Quickstart

Check the overall status for one or more conversion jobs by passing their IDs as a query parameter.

curl -X GET "http://localhost:8080/flowdocs/convert-pdf-to-word/overall-status?job_ids=job-123,job-456" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object with required status and progress fields, plus optional details, total_files, and completed_files.

  • status is a string enum: unknown, queued, processing, done, or failed.
  • progress is an integer from 0 to 100.
{
  "status": "processing",
  "progress": 60,
  "details": [
    {
      "job_id": "job-123",
      "status": "processing",
      "progress": 60
    }
  ],
  "total_files": 2,
  "completed_files": 1
}
TRY ITLIVE · 1 ATOM
Loading your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.

About this endpoint

What it does

Aggregates the progress of one or more PDF-to-Word jobs and returns a combined status summary. The response includes overall status and progress, with optional per-job details plus file counts.

Query Parameter(s)

AttributeTypeMandatoryDescription
job_idsStringYesJob identifier(s) to aggregate.

Response

Returns a JSON object with required status and progress fields, plus optional details, total_files, and completed_files fields. The overall status is a string enum and progress is an integer from 0 to 100.

AttributeTypeMandatoryDescription
statusENUMYesOverall job state. Allowed values: unknown, queued, processing, done, failed.
progressIntegerYesAggregate progress percentage. Minimum 0, maximum 100.
detailsObject ArrayNoPer-job status entries. Each item may include job_id, status, and progress.
details[].job_idStringNoJob identifier for the individual job.
details[].statusStringNoStatus for the individual job.
details[].progressIntegerNoProgress value for the individual job.
total_filesIntegerNoTotal number of files included in the aggregate.
completed_filesIntegerNoNumber of files completed so far.

Query parameters

Name
Type
Description
job_idsREQUIRED
string
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.