pennypdf

Developer API

PDF merge API

Merging PDFs is a commodity operation. The page tree gets concatenated, the cross-reference table deduplicated, the trailer rewritten. Nothing about that should cost money — yet PDF.co charges $0.01 per call, Api2pdf bills credits, and DocRaptor doesn't offer merge at all.

PennyPDF's /v1/merge endpoint is priced at 0 coins. Upload any number of PDFs as a multipart form, receive the merged PDF back in the response body. Bookmarks from each source are preserved and offset. Up to 2 GB of combined input per request, 200 requests/minute per API key.

If you're assembling 10,000 merged PDFs a month as part of a report-generation pipeline, that's 10,000 free operations on PennyPDF versus $100+ on a metered competitor. The paid operations (compress, convert, OCR, sign) use the same API key, so your billing stays consolidated without the subscription floor.

Copy, paste, ship

Same bearer-token auth across every endpoint. Set PENNYPDF_API_KEY in your environment first.

curlPOST /v1/merge
curl -X POST https://api.pennypdf.com/v1/merge \
  -H "Authorization: Bearer $PENNYPDF_API_KEY" \
  -F "files[]=@part1.pdf" \
  -F "files[]=@part2.pdf" \
  -F "files[]=@part3.pdf" \
  -o merged.pdf
Pythonrequests
import os, requests

files = [("files[]", open(p, "rb")) for p in ("part1.pdf", "part2.pdf", "part3.pdf")]
r = requests.post(
    "https://api.pennypdf.com/v1/merge",
    headers={"Authorization": f"Bearer {os.environ['PENNYPDF_API_KEY']}"},
    files=files,
)
r.raise_for_status()
open("merged.pdf", "wb").write(r.content)
print(f"Spent {r.headers['X-Coins-Spent']} coins")  # 0

PennyPDF vs PDF.co merge API

 PennyPDFPDF.co merge API
Price per merge$0~$0.01 per call
Entry minimum$0.99 one-time$9.99/mo minimum
Bookmark preservationYes, auto-offsetYes
Max payload2 GB combined input100 MB per file
Rate limit200 rpm baseline10 rps on lowest tier
Pay-as-you-goYes, alwaysOnly after subscription

How it works

  1. 1Sign in at /dashboard/api and grab an API key (or email api@pennypdf.com for instant provisioning).
  2. 2POST your PDFs as multipart/form-data to /v1/merge.
  3. 3Receive the merged PDF in the response body. No polling, no webhooks, no coins debited.

Frequently asked

What's the actual cost at 10,000 merges per month?+

$0 on PennyPDF. The /v1/merge endpoint is listed at 0 coins because server-side cost is trivial and we'd rather earn trust than gate a commodity. Contrast: PDF.co ~$100/month at that volume, Api2pdf ~$50/month on metered credits.

How many files can I merge in one request?+

Up to 2 GB of combined input. No hard cap on file count below that — we've seen 500-file merges in production without issue. If one file is larger than 100 MB on its own, use the async variant (POST /v1/jobs/merge) which streams to R2.

What's the typical latency?+

90th percentile is 350 ms for a 20-page merge, 1.2 s for a 200-page merge, 4 s for a 1000-page merge. Merges run on the pre-warmed worker pool; cold starts aren't a factor.

What are the rate limits?+

200 requests/minute per API key, burst to 400. Higher limits on request — email api@pennypdf.com with your expected peak QPS and we'll bump you within a business day, no sales call.

Are bookmarks preserved?+

Yes. Every source PDF's bookmark tree is offset by the page count of earlier inputs and concatenated. The merged PDF's outline reflects the combined structure exactly as you'd expect.

Does /v1/merge support encrypted PDFs?+

Pass &passwords[] per input file in the same multipart payload. If a file can't be decrypted, the entire merge fails atomically — no partial output, no coins debited (which matters for the paid endpoints, not this one).

Why PennyPDF

  • No subscription. Ever.
  • Coins never expire — use them in 5 years.
  • Client-side processing for 14 of 22 tools.
  • No watermarks at any tier.
  • Per-operation pricing, shown before you click.
  • Same coins for web + public API.