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/api

1. 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

ToolEndpointAccepts
Merge PDFs/api/process/merge.pdf (up to 50)
Split PDF/api/process/split.pdf
Compress PDF/api/process/compress.pdf
Rotate PDF/api/process/rotate.pdf
Remove Pages/api/process/remove-pages.pdf
PDF to Image/api/process/pdf-to-image.pdf
Image to PDF/api/process/image-to-pdf.jpg, .png, .webp
Add Watermark/api/process/watermark.pdf
Protect PDF/api/process/protect.pdf
Unlock PDF/api/process/unlock.pdf
Add Page Numbers/api/process/page-numbers.pdf
PDF to Word/api/process/pdf-to-word.pdf
Word to PDF/api/process/word-to-pdf.docx, .doc, .odt
OCR/api/process/ocr.pdf
Repair PDF/api/process/repair.pdf
Redact PDF/api/process/redact.pdf

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.pdf

Full 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.