apyhub
FILE CONVERSION

Convert Excel to PDF Job API

Hosted on ApyHub

What it does

Excel to PDF Converter turns spreadsheet files into PDF output jobs you can track, inspect, and download. Send one or more .xlsx, .xlsm, or .xls files in the files array, then use the returned job records to follow conversion progress.

Each conversion request returns a jobs array. Every job includes a job_id, filename, status, and progress, so you can queue multiple workbooks and keep your UI or backend in sync without guessing when files are ready.

Use GET /status/:job_id when you need the current state of a single conversion. The response gives you the job_id, status, progress, and an optional error field. Status values cover queued, processing, done, and failed, which makes it straightforward to retry, alert, or move the file into the next step of your workflow.

When a job finishes, GET /download/:job_id returns the converted PDF as binary data. If you are handling batches, GET /overall-status accepts job_ids and returns aggregate status, progress, total_files, completed_files, and a details array with per-job status and progress.

Note: Pricing is 1 atom per page + 50.

▣ ENDPOINT 01 / 04
POST
Convert Excel files (.xlsx, .xlsm, .xls) to PDF
http://localhost:8080/flowdocs/convert-excel-to-pdf
QUICKSTARTGUIDE

Quickstart

Upload one or more Excel files to convert them to PDF jobs.

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

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 for the created conversion job.

{
  "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*
Excel files to convert to PDF.

About this endpoint

What it does

Converts one or more Excel files (.xlsx, .xlsm, .xls) to PDF. The request uploads the files, and the response returns a list of conversion jobs for the submitted files.

Request Body

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

Response

Returns a JSON object with a jobs array field. Each item in jobs is an object containing the conversion job details: job_id (string), filename (string), status (string), and progress (integer).

ParameterTypeMandatoryDescription
jobsObject ArrayYesThe list of conversion jobs returned for the uploaded files.
jobs[].job_idStringYesThe job identifier for the conversion job.
jobs[].filenameStringYesThe output PDF filename.
jobs[].statusStringYesThe job status.
jobs[].progressIntegerYesThe job progress value.

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 an Excel-to-PDF job
http://localhost:8080/flowdocs/convert-excel-to-pdf/status/:job_id
QUICKSTARTGUIDE

Quickstart

Check the status of a conversion job by its job_id.

curl -X GET "http://localhost:8080/flowdocs/convert-excel-to-pdf/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), and progress as an integer from 0 to 100. It may also include 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 an Excel-to-PDF conversion job identified by job_id and returns the job’s current state along with its progress. On failure, the response may also include an error message.

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, progress as an integer, and error as a nullable string. The success response includes the current job state and completion progress.

AttributeTypeMandatoryDescription
job_idStringYesThe job identifier returned for the conversion job.
statusENUMYesCurrent job status. Allowed values: queued, processing, done, failed.
progressIntegerYesCompletion progress from 0 to 100.
errorStringNoError message, if present. Nullable.

Notes

Poll this endpoint with the job_id from the job submission call. The status field cycles through queued and processing before reaching a terminal state (done or failed). The progress field indicates completion from 0 to 100.

Path parameters

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

Quickstart

Download the generated PDF for a completed Excel-to-PDF job by replacing job_id in the path.

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

What you'll get back

Returns binary file content (string with format: binary), not JSON.

[pdf binary data]
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 finished PDF file for a previously created Excel-to-PDF job. The job_id path parameter identifies which job output to retrieve.

Path Parameter(s)

AttributeTypeMandatoryDescription
job_idStringYesIdentifies the finished conversion job to download.

Response

Returns a binary file response containing the generated PDF. The output schema is a binary string, so the response body is the downloadable file itself.

AttributeTypeMandatoryDescription
bodyStringYesBinary PDF file content.

Path parameters

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

Quickstart

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

curl -X GET "http://localhost:8080/flowdocs/convert-excel-to-pdf/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 fields. status is one of unknown, queued, processing, done, or failed, and 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

Returns the aggregate status for one or more Excel-to-PDF jobs identified by job IDs. The response includes an overall status, overall progress, and additional fields describing the grouped job results.

Query Parameter(s)

AttributeTypeMandatoryDescription
job_idsStringYesJob ID value used to request the aggregate status for one or more jobs.

Response

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

AttributeTypeMandatoryDescription
statusStringYesOverall job status. Allowed values: unknown, queued, processing, done, failed.
detailsObject ArrayNoPer-job status entries. Each item may include job_id (String), status (String), and progress (Integer).
progressIntegerYesOverall progress percentage. Minimum 0, maximum 100.
total_filesIntegerNoTotal number of files included in the aggregate status.
completed_filesIntegerNoNumber of files completed in the aggregate status.

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.