Manipulation and Conversion¶
The PDF Toolkit covers the most common document manipulation workflows with a JSON-first API.
Core endpoints¶
| Endpoint | Purpose |
|---|---|
POST /v1/pdf/merge |
Merge 2-20 PDFs into one |
POST /v1/pdf/split |
Split a PDF into parts or pages |
POST /v1/pdf/rotate |
Rotate selected pages |
POST /v1/pdf/compress |
Reduce file size |
POST /v1/pdf/watermark |
Add a text watermark |
POST /v1/pdf/protect |
Encrypt or decrypt a PDF |
POST /v1/pdf/to-images |
Render PDF pages as PNG or JPEG |
REST API Examples¶
Merge PDFs¶
curl -X POST "https://pdf.toolkitapi.io/v1/pdf/merge" \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"pdf_urls": ["https://toolkitapi.io/a.pdf", "https://toolkitapi.io/b.pdf", "https://toolkitapi.io/c.pdf"]}'
const resp = await fetch("https://pdf.toolkitapi.io/v1/pdf/merge", {
method: "POST",
headers: { "X-API-Key": "YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
pdf_urls: ["https://toolkitapi.io/a.pdf", "https://toolkitapi.io/b.pdf"],
}),
});
const data = await resp.json();
console.log(`Merged PDF: ${data.result_url}`);
Split a PDF¶
curl -X POST "https://pdf.toolkitapi.io/v1/pdf/split" \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://toolkitapi.io/report.pdf", "pages": "1,3-5"}'
Compress a PDF¶
curl -X POST "https://pdf.toolkitapi.io/v1/pdf/compress" \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://toolkitapi.io/large-report.pdf", "quality": "medium"}'
Convert PDF to images¶
curl -X POST "https://pdf.toolkitapi.io/v1/pdf/to-images" \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://toolkitapi.io/report.pdf", "format": "png", "dpi": 150}'
Python SDK Examples¶
Merge PDFs¶
from toolkitapi import PDF
with PDF(api_key="tk_...") as pdf:
result = pdf.merge(
pdf_urls=[
"https://toolkitapi.io/a.pdf",
"https://toolkitapi.io/b.pdf",
]
)
print(result["page_count"])
Split pages¶
from toolkitapi import PDF
with PDF(api_key="tk_...") as pdf:
result = pdf.split(
url="https://toolkitapi.io/report.pdf",
pages="1-3,4-6",
)
print(result["total_parts"])
Rotate pages¶
from toolkitapi import PDF
with PDF(api_key="tk_...") as pdf:
result = pdf.rotate(
90,
url="https://toolkitapi.io/report.pdf",
pages="1-2",
)
print(result["rotated_pages"])
Compress a PDF¶
from toolkitapi import PDF
with PDF(api_key="tk_...") as pdf:
result = pdf.compress(url="https://toolkitapi.io/report.pdf")
print(result["savings_percent"])
Add a watermark¶
from toolkitapi import PDF
with PDF(api_key="tk_...") as pdf:
result = pdf.watermark(
"CONFIDENTIAL",
url="https://toolkitapi.io/report.pdf",
opacity=0.12,
angle=45,
)
print(result["watermarked_pages"])
Protect a document¶
from toolkitapi import PDF
with PDF(api_key="tk_...") as pdf:
result = pdf.protect(
url="https://toolkitapi.io/report.pdf",
action="encrypt",
user_password="open123",
owner_password="owner456",
)
print(result["is_encrypted"])
Convert pages to images¶
from toolkitapi import PDF
with PDF(api_key="tk_...") as pdf:
result = pdf.to_images(
url="https://toolkitapi.io/report.pdf",
pages="1-2",
format="jpeg",
dpi=200,
)
print(result["rendered_pages"])
Tips¶
- Most endpoints accept either
pdfas base64 orurlas a public PDF URL - Use
to_imagesbefore OCR only when you need visual page output for another workflow - Use
protectwhen you need either password creation or password removal in one route