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:
The API token should be included in the request as a bearer token value.
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/search
Search in the PDF file
Request
cURL
curl -X POST https://apdf.io/api/pdf/content/search \
-H "Authorization: Bearer $API_TOKEN" \
-d file="$FILE_URL" \
-d text="$SEARCH_TEXT"
Parameters
Parameter | Required | Description |
---|---|---|
file | yes | URL of the PDF file |
text | yes | Text to search for |
case | no | Set case to 1 for a case-sensitive search |
regex | no | Set regex to 1 to interpret the search text as a regular expression |
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
{
"search_text": "portable document format",
"results_total": 3,
"results_pages": 2,
"results": [
{
"page": "6",
"matched_line": "7. \"ISO 32000-1:2008 – Document management – Portable document format – Part 1: PDF",
"exact_word": "Portable document format"
},
{
"page": "17",
"matched_line": "37. Adobe Systems Inc. (July 1, 2008). \"Document Management – Portable Document Format –",
"exact_word": "Portable Document Format"
},
{
"page": "17",
"matched_line": "64. \"Processing Dangerous Paths – On Security and Privacy of the Portable Document Format\"",
"exact_word": "Portable Document Format"
}
]
}
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
}
}