Quick Navigation

API Reference

The aPDF.io API is an easy to use REST-based API. All requests are securely transmitted over HTTPS. All responses from the API will be formatted as JSON.

For simplicity, all endpoints use the POST request method.
The base URL for all API endpoints is:
Base URL
https://apdf.io/api

Authentication

The aPDF.io API uses API tokens to authenticate requests. You can view and manage your API tokens in your account.

The API token should be included in the request as a bearer token value.
Authentication
curl https://apdf.io/api \
  -H "Authorization: Bearer $API_TOKEN"

Headers

Make sure you have the following content type headers are set on every request:
Headers
Accept: application/json
Content-Type: application/json

Limitations

To ensure smooth and reliable API operation for all users, a few usage limitations are in place:
  • Each API token is limited to a maximum of 20 requests per second
  • Generated PDF files are stored for 60 min. before being automatically deleted
  • Uploaded PDF files must not exceed 100 MB in size

pdf/file/create

Create a PDF from HTML

Request

cURL
curl -X POST https://apdf.io/api/pdf/file/create \
  -H "Authorization: Bearer $API_TOKEN" \
  -d html="<html><body><h1>Hello World!</h1></body></html>"

Parameters

Parameter Required Description
html yes HTML to be converted to a PDF document
scale no Scale factor of the document. Valid values: 0.1 - 2
format no Format of the document. Valid values: letter, legal, tabloid, ledger, a0, a1, a2, a3, a4, a5, a6
unit no Unit of the document. Valid values: px, in, cm, mm
width no Width of the document in mm or in the given unit
height no Height of the document in mm or in the given unit
orientation no Orientation of the document. Valid values: portrait, landscape
margin_top no Top margin of the document in mm or in the given unit
margin_right no Right margin of the document in mm or in the given unit
margin_bottom no Bottom margin of the document in mm or in the given unit
margin_left no Left margin of the document in mm or in the given unit
header no Header HTML to be used for the header on all pages
footer no Footer HTML to be used for the footer on all pages
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
{
  "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/6f1674e2703953aa.pdf",
  "expiration": "2024-12-02T22:30:54.450552Z",
  "pages": 1,
  "size": 11838
}

pdf/file/split

Split a PDF into multiple PDF files

Request

cURL
curl -X POST https://apdf.io/api/pdf/file/split \
  -H "Authorization: Bearer $API_TOKEN" \
  -d file="$FILE_URL" \
  -d pages="1-3,4,5-z"

Parameters

Parameter Required Description
file yes URL of the PDF file
pages yes Pages at which the PDF will be split, examples:
1,2-3,4-z = 3 PDFs with page 1, page 2 and 3, and page 4 to the end
n3 = every 3 pages a new PDF file
1-r2,z = 2 PDFs with page 1 to the penultimate page, and the last page
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
[
  {
    "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/191674e262f952ca-1-3.pdf",
    "expiration": "2024-12-02T22:27:11.610806Z",
    "pages": 3,
    "size": 390102
  },
  {
    "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/191674e262f952ca-4.pdf",
    "expiration": "2024-12-02T22:27:11.610806Z",
    "pages": 1,
    "size": 241161
  },
  {
    "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/191674e262f952ca-5-z.pdf",
    "expiration": "2024-12-02T22:27:11.610806Z",
    "pages": 6,
    "size": 570713
  }
]

pdf/file/merge

Merge multiple PDF files into one file

Request

cURL
curl -X POST https://apdf.io/api/pdf/file/merge \
  -H "Authorization: Bearer $API_TOKEN" \
  -d files[0][file]="$FILE_1_URL" \
  -d files[0][pages]="1,5-z" \
  -d files[1][file]="$FILE_2_URL"

Parameters

Parameter Required Description
files[] yes Array of the PDF files to merge and their options
files[i][file] yes URL of the PDF file
files[i][pages] no Pages to be used for merging, examples:
1,6,4 = pages 1, 6, and 4 in that order
3-7 = pages 3 through 7 in increasing order
2,6-z = page 2 and 6 to the end
r3-r1 = the last three pages
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
{
  "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/a736755a3dab32b8.pdf",
  "expiration": "2024-12-08T14:49:16.997135Z",
  "pages": 12,
  "size": 165310
}

pdf/file/compress

Compress a PDF file

Request

cURL
curl -X POST https://apdf.io/api/pdf/file/compress \
  -H "Authorization: Bearer $API_TOKEN" \
  -d file="$FILE_URL"

Parameters

Parameter Required Description
file yes URL of the PDF file
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
{
  "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/b72674993b1ae785.pdf",
  "expiration": "2024-11-30T11:13:09.716337Z",
  "size_original": 26214400,
  "size_compressed": 3145728
}

pdf/page/extract

Extract page(s) into a new PDF file

Request

cURL
curl -X POST https://apdf.io/api/pdf/page/extract \
  -H "Authorization: Bearer $API_TOKEN" \
  -d file="$FILE_URL" \
  -d pages="1-3,6,9-z"

Parameters

Parameter Required Description
file yes URL of the PDF file
pages yes Pages to be extracted, examples:
1,6,4 = pages 1, 6, and 4 in that order
3-7 = pages 3 through 7 in increasing order
2,6-z = page 2 and 6 to the end
r3-r1 = the last three pages
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
{
  "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/6ac674c9c031e515.pdf",
  "expiration": "2024-12-01T18:25:25.137351Z",
  "pages": 8,
  "size": 2304916
}

pdf/page/delete

Delete page(s) from a PDF file

Request

cURL
curl -X POST https://apdf.io/api/pdf/page/delete \
  -H "Authorization: Bearer $API_TOKEN" \
  -d file="$FILE_URL" \
  -d pages="1-3,z"

Parameters

Parameter Required Description
file yes URL of the PDF file
pages yes Pages to be deleted, examples:
1,4,6 = pages 1, 4, and 6
2,6-z = page 2 and 6 to the end
r3-r1 = the last three pages
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
{
  "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/6ac674c9c031e515.pdf",
  "expiration": "2024-12-01T18:25:25.137351Z",
  "pages": 8,
  "size": 2304916
}

pdf/page/rotate

Rotate page(s) in a PDF file

Request

cURL
curl -X POST https://apdf.io/api/pdf/page/rotate \
  -H "Authorization: Bearer $API_TOKEN" \
  -d file="$FILE_URL" \
  -d rotations[0][angle]="-90" \
  -d rotations[0][pages]="1-3" \
  -d rotations[1][angle]="+180"
  -d rotations[1][pages]="z" \

Parameters

Parameter Required Description
file yes URL of the PDF file
rotations[] yes Array of the rotations to perform
rotations[i][angle] yes Angle to rotate. Valid values: + or - followed by 0, 90, 180, 270
rotations[i][pages] no Pages to be rotated (or keep empty for all pages), examples:
1,5 = pages 1 and 5
3-7,z = pages 3 through 7 and the last page
r3-r1 = the last three pages
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
{
    "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/b72674993b1ae785.pdf",
    "expiration": "2024-12-15T13:16:12.757041Z"
}

pdf/content/read

Get the content of the PDF file

Request

cURL
curl -X POST https://apdf.io/api/pdf/content/read \
  -H "Authorization: Bearer $API_TOKEN" \
  -d file="$FILE_URL"

Parameters

Parameter Required Description
file yes URL of the PDF file
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
{
  "pages_total": 3,
  "characters_total": 8642,
  "pages": [
    {
      "page": 1,
      "characters": 2398,
      "content": "PDF\\nPortable Document Format (PDF), standardized as\\nISO 32000 ..."
    },
    {
      "page": 2,
      "characters": 2900,
      "content": "PDF was a proprietary format controlled by Adobe until it was released ..."
    },
    {
      "page": 3,
      "characters": 3344,
      "content": "PostScript was originally designed for a drastically different use case ..."
    }
  ]
}

pdf/security/add

Add password protection to the PDF

Request

cURL
curl -X POST https://apdf.io/api/pdf/security/add \
  -H "Authorization: Bearer $API_TOKEN" \
  -d file="$FILE_URL" \
  -d owner_password="$OWNER_PASSWORD" \
  -d user_password="$USER_PASSWORD"

Parameters

Parameter Required Description
file yes URL of the PDF file
owner_password yes The owner password used for encryption and for setting/removing restrictions
user_password no The user password required to open and view the PDF
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
{
    "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/b72674993b1ae785.pdf",
    "expiration": "2024-12-15T13:16:12.757041Z"
}

pdf/security/remove

Remove password protection from the PDF

Request

cURL
curl -X POST https://apdf.io/api/pdf/security/remove \
  -H "Authorization: Bearer $API_TOKEN" \
  -d file="$FILE_URL" \
  -d password="$PASSWORD"

Parameters

Parameter Required Description
file yes URL of the PDF file
password no The owner or user password
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
{
    "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/b72674993b1ae785.pdf",
    "expiration": "2024-12-15T13:16:12.757041Z"
}

pdf/metadata/read

Get info data about a PDF file

Request

cURL
curl -X POST https://apdf.io/api/pdf/metadata/read \
  -H "Authorization: Bearer $API_TOKEN" \
  -d file="$FILE_URL"

Parameters

Parameter Required Description
file yes URL of the PDF file
async no Set async to 1 for executing this call in the background. API will return a job ID for requesting the /job/status/check endpoint

Response

JSON
{
  "title": "Example",
  "creator": "aPDF.io",
  "producer": "aPDF/API",
  "created": "Tue Jul  1 07:24:47 2024 CEST",
  "modified": "Tue Jul  1 07:24:47 2024 CEST",
  "pages": 4,
  "encrypted": false,
  "page_size": "595.92 x 841.92 pts (A4)",
  "file_size": 221441,
  "pdf_version": "1.4"
}

job/status/check

Check the job status of an asynchronous API call

Request

cURL
curl -X POST https://apdf.io/api/job/status/check \
  -H "Authorization: Bearer $API_TOKEN" \
  -d id="$JOB_ID"

Parameters

Parameter Required Description
id yes ID of the asynchronous job

Response

RUNNING
{
    "id": "01JEB5W3960DD5363GCSPNSQVX",
    "created": "2024-12-01T10:29:26.000000Z",
    "status": "running",
    "result": null
}
SUCCESSFUL
{
    "id": "01JEB5W3960DD5363GCSPNSQVX",
    "created": "2024-12-02T22:30:54.450552Z",
    "status": "successful",
    "result": {
        "file": "https://apdf-files.s3.eu-central-1.amazonaws.com/6f1674e2703953aa.pdf",
        "expiration": "2024-12-02T23:33:41.450552Z",
        "pages": 1,
        "size": 11838
    }
}