Developer API
All pdf4u tools are accessible via a simple HTTP API. No API key required. Rate limited to 10 requests/minute per IP.
No API key required
Files auto-deleted after processing
Standard multipart/form-data
Base URL
https://pdf4u.de/api1. Submit a Processing Job
POST to /api/process/{tool} with your file(s) as multipart form data. Returns a job_id.
# Merge PDFs
curl -X POST https://pdf4u.de/api/process/merge \
-F "files=@document1.pdf" \
-F "files=@document2.pdf"
# Compress a PDF
curl -X POST https://pdf4u.de/api/process/compress \
-F "files=@large.pdf" \
-F 'options={"level":"medium"}'
# Convert Word to PDF
curl -X POST https://pdf4u.de/api/process/word-to-pdf \
-F "files=@report.docx"
# OCR a scanned PDF (language options: eng, deu, fra, spa, ara)
curl -X POST https://pdf4u.de/api/process/ocr \
-F "files=@scanned.pdf" \
-F 'options={"language":"eng"}'
# Redact text from a PDF
curl -X POST https://pdf4u.de/api/process/redact \
-F "files=@contract.pdf" \
-F 'options={"terms":["John Smith","john@example.com"],"case_sensitive":false}'
# Response:
# { "job_id": "550e8400-e29b-41d4-a716-446655440000" }Available Tools
| Tool | Endpoint | Accepts |
|---|---|---|
| Merge PDFs | /api/process/merge | .pdf (up to 50) |
| Split PDF | /api/process/split | |
| Compress PDF | /api/process/compress | |
| Rotate PDF | /api/process/rotate | |
| Remove Pages | /api/process/remove-pages | |
| PDF to Image | /api/process/pdf-to-image | |
| Image to PDF | /api/process/image-to-pdf | .jpg, .png, .webp |
| Add Watermark | /api/process/watermark | |
| Protect PDF | /api/process/protect | |
| Unlock PDF | /api/process/unlock | |
| Add Page Numbers | /api/process/page-numbers | |
| PDF to Word | /api/process/pdf-to-word | |
| Word to PDF | /api/process/word-to-pdf | .docx, .doc, .odt |
| OCR | /api/process/ocr | |
| Repair PDF | /api/process/repair | |
| Redact PDF | /api/process/redact |
2. Poll for Job Status
Jobs are processed asynchronously. Poll /api/status/{job_id} until status is completed or failed.
curl https://pdf4u.de/api/status/550e8400-e29b-41d4-a716-446655440000
# Response (pending):
# { "status": "pending", "progress": 0 }
# Response (completed):
# {
# "status": "completed",
# "progress": 100,
# "output_filename": "merged_output.pdf",
# "download_url": "/api/download/550e8400-e29b-41d4-a716-446655440000/merged_output.pdf"
# }3. Download the Result
curl -O https://pdf4u.de/api/download/550e8400-e29b-41d4-a716-446655440000/merged_output.pdfFull Shell Script Example
#!/bin/bash
# Merge two PDFs and download the result
BASE="https://pdf4u.de/api"
# 1. Submit
RESPONSE=$(curl -s -X POST "$BASE/process/merge" \
-F "files=@part1.pdf" \
-F "files=@part2.pdf")
JOB_ID=$(echo "$RESPONSE" | python3 -c "import sys,json; print(json.load(sys.stdin)['job_id'])")
echo "Job ID: $JOB_ID"
# 2. Poll until done
while true; do
STATUS_JSON=$(curl -s "$BASE/status/$JOB_ID")
STATUS=$(echo "$STATUS_JSON" | python3 -c "import sys,json; print(json.load(sys.stdin)['status'])")
echo "Status: $STATUS"
if [ "$STATUS" = "completed" ]; then
DOWNLOAD=$(echo "$STATUS_JSON" | python3 -c "import sys,json; print(json.load(sys.stdin)['download_url'])")
break
elif [ "$STATUS" = "failed" ]; then
echo "Job failed"
exit 1
fi
sleep 2
done
# 3. Download
curl -O "https://pdf4u.de$DOWNLOAD"
echo "Downloaded: $(basename "$DOWNLOAD")"Rate Limits & File Size
Max file size100 MB per file
Rate limit10 requests/minute per IP
AI endpoints5 requests/minute per IP
File retentionAuto-deleted within 1 hour of processing
Max files per merge50 PDFs
Note: This API is provided as-is for personal and small-project use. For high-volume usage, consider self-hosting — pdf4u is open source on GitHub.