apyhub
FILE CONVERSION

Convert Excel to PDF Job API

Hosted on ApyHub

What it does

Excel to PDF converts one or more Excel files into PDF output you can download after the job finishes. Send .xlsx, .xlsm, or .xls files in the request body and get back a batch_id plus a list of jobs with each job’s job_id, filename, status, and progress.

Use it when you need spreadsheet exports for sharing, archiving, or review without requiring the recipient to open Excel. The service is built for batch conversion, so you can submit multiple files at once and track them individually as they move from queued to processing and done.

Poll /status/:job_id to check a single job or batch. For grouped work, the status response can include total_files, completed_files, and per-job progress. If you need a broader view across multiple jobs, /overall-status returns aggregate status, progress, and optional details for each job ID.

When a conversion is complete, use /download/:job_id to fetch the finished PDF as binary output. That makes Excel to PDF a fit for document pipelines, report generation, and any workflow that needs spreadsheet content delivered in a fixed-format file.

Note: Pricing is 1 atom per page + 50.

▣ ENDPOINT 01 / 04
POST
Convert Excel files (.xlsx, .xlsm, .xls) to PDF
https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf

QUICKSTART

GUIDE

Quickstart

Upload one or more Excel files to convert them to PDF in a batch.

curl -X POST "https://api.eu.apyhub.com/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 batch_id string and a jobs array. Each job in jobs is an object with job_id, filename, status, and progress fields.

{
  "batch_id": "a1b2c3d4e5f6a7b8",
  "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 uploaded Excel files (.xlsx, .xlsm, .xls) to PDF. The request submits the files for processing and returns a batch identifier plus a list of per-file jobs.

Request Body

ParameterTypeMandatoryDescription
filesString ArrayYesExcel files to convert to PDF.

Response

Returns a JSON object with a batch_id string field and a jobs array field. Each item in jobs is an object with job_id, filename, status, progress, and batch_id fields. Success responses use this object shape; the schema does not declare an explicit status code.

ParameterTypeMandatoryDescription
batch_idStringYesParent id for this submit; also returned as X-Apy-Job-Id.
jobsObject ArrayYesList of child jobs created for the submitted files. Each job item includes job_id, filename, status, progress, and batch_id.

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
https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/status/:job_id

QUICKSTART

GUIDE

Quickstart

Check the status of a conversion job by its job_id.

curl -X GET "https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/status/:job_id" \
  -H "apy-token: $APY_TOKEN"

What you'll get back

Returns a JSON object matching one of three shapes, depending on the job type and state. The response always includes job_id, status, and progress; some shapes also include error, and batch responses include batch, jobs, total_files, and completed_files.

{
  "job_id": "job_123",
  "status": "processing",
  "progress": 45
}
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 current status of an Excel-to-PDF conversion job, returning the job identifier, status, and progress. Depending on whether the job is part of a batch, the response may also include batch-related counts and job lists.

Path Parameter(s)

AttributeTypeMandatoryDescription
job_idStringYesThe job identifier in the path.

Response

Returns a JSON object describing the job status. The response shape is one of three object variants: a batch-status object with job_id, batch, status, progress, total_files, completed_files, and jobs; a batch-child status object with job_id, batch_id, status, and progress; or a single-job status object with job_id, status, and progress. In all variants, status is one of queued, processing, done, or failed, and progress is an integer from 0 to 100.

ParameterTypeMandatoryDescription
job_idStringYesThe job identifier. In the batch variant, this is described as the batch id.
batchBooleanYestrue for the batch-status variant.
statusENUMYesOne of queued, processing, done, failed.
progressIntegerYesCompletion progress from 0 to 100.
total_filesIntegerYesTotal number of files in the batch. Present in the batch-status variant.
completed_filesIntegerYesNumber of files completed in the batch. Present in the batch-status variant.
jobsObject ArrayYesArray of job objects in the batch-status variant. Each item may include job_id, status, and progress.
errorStringNoError message, if present. Nullable in the schema.
batch_idStringYesParent batch id. Billing happens at the parent, not here. Present in the batch-child status variant.

Path parameters

Name
Type
Description
job_idREQUIRED
string
▣ ENDPOINT 03 / 04
GET
Download a finished Excel-to-PDF output
https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/download/:job_id

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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
https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/overall-status

QUICKSTART

GUIDE

Quickstart

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

curl -X GET "https://api.eu.apyhub.com/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.