← Back to the tool

PDF API

No API key. No account. No sign-up. Merge, compress, split, rotate, convert and OCR PDFs over plain HTTP. Post a file, get an id, download the result.

Last updated: 1 September 2026

This is the same engine the ScanReviver website runs on. It is free to call within the limits below, and there is nothing to register for.

How a call works

Every job is two steps. You POST your file and get a small JSON object back with an id. You then GET the result using that id. The reason for the split is that one job can produce more than one output: a merged PDF, a single page, or a ZIP of images.

# step 1 — send two PDFs to be merged
$ curl -s -F "[email protected]" -F "[email protected]" \
    https://scanreviver.com/api/pdf-merge
{"id":"5ea56646f09146979eabc2faecd0f889","bytes":72597,"files":2}

# step 2 — download the merged file
$ curl -s -o merged.pdf \
    https://scanreviver.com/api/pdf-file/5ea56646f09146979eabc2faecd0f889

Endpoints

All of these take multipart/form-data and return JSON containing an id.

EndpointSendThen fetch from
POST /api/pdf-mergefiles, one field repeated per PDF/api/pdf-file/{id}
POST /api/pdf-compressfile, plus level (good by default)/api/pdf-file/{id}
POST /api/pdf-splitfile/api/pdf-split-file/{id}
POST /api/pdf-to-imagesfile/api/pdf-zip/{id}, or one page at a time from /api/pdf-page/{id}/{n}
POST /api/pdf-to-wordfile/api/pdf-word/{id}
POST /api/pdf-to-excelfile/api/pdf-excel/{id}
POST /api/pdf-to-pptfile/api/pdf-ppt/{id}
POST /api/ocr-textfilenothing — the text comes back in the same response

The site has more endpoints than these, covering rotating, cropping, page numbers, watermarks, forms and signing. They follow the same two-step shape. If you need one that is not listed here, ask on the contact page and we will document it properly rather than let you guess.

OCR returns text directly

/api/ocr-text is the one that does not need a second call, because the result is text rather than a file:

$ curl -s -F "[email protected]" https://scanreviver.com/api/ocr-text
{"text":"Invoice 2026 total 42 euro","pages":1,"total_pages":1,"chars":26}

Limits

Maximum per file25 MB
Maximum per job100 MB
Pages per job30
Jobs at once1 per IP address
Jobs per dayNo cap
Result stays available45 minutes

The 45 minutes matter: download the result in the same run of your script. An id you saved yesterday will not work, and that is deliberate — nothing of yours sits on our disk longer than it has to.

Errors

Errors come back as JSON, not as a file, so check the status code before writing the body anywhere.

StatusMeaning
400The file cannot be used for this operation, or the job id is unknown or older than 45 minutes. The message says which.
413Too big, or too many pages.
422A required form field is missing.
429You already have a job running from this address.

A useful one to expect: sending a scanned PDF to the Word converter gives a 400 telling you to run OCR first, because there is no real text in the file to convert.

Python, end to end

import requests

BASE = "https://scanreviver.com"

r = requests.post(f"{BASE}/api/pdf-merge",
                  files=[("files", open("a.pdf", "rb")),
                         ("files", open("b.pdf", "rb"))],
                  timeout=180)
r.raise_for_status()
job = r.json()["id"]

out = requests.get(f"{BASE}/api/pdf-file/{job}", timeout=180)
out.raise_for_status()
open("merged.pdf", "wb").write(out.content)

Using it in your own project

Build on it, including in something you charge for. Two things we ask, neither enforced: keep to one job at a time so everyone gets a turn, and if your project lists what it uses, link back to scanreviver.com. That is what keeps this free.

Planning real volume? Say hello on the contact page first. We would rather hear from you than throttle you.

Questions

Do I need an API key?

No. No key, no account, no sign-up.

Why an id instead of the file?

One job can have several outputs, such as a single page or a ZIP of all of them. The id lets you pick which one you want.

How long does the id last?

45 minutes, then the result is deleted.

Is there a daily cap?

No. The only throttle is one job processing at a time per IP address.

Does the paid pass change the API limits?

The pass raises the file size and page count on the website. Treat the numbers on this page as what you get without one.

Terms are on the terms page, and what happens to your data is on the privacy page.