PDF Press API

POST a PDF and a steps pipeline — get a print-ready, imposed PDF back. One key for web, desktop, and API.

Impose flyers, cards, booklets, and books programmatically — the same engine that powers the PDF Press app, behind a clean HTTP API. Prepaid GiB pricing, never-expiring credits, 250 MiB free to start.

Free starter credits on signup — no card required to try.

curl https://api.pdfpress.app/v1/impose \
  -H "Authorization: Bearer imp_live_…" \
  -F [email protected] \
  -F 'steps=[{"kind":"Grid","columns":2,"rows":2}]' \
  -o imposed.pdf

How it works

1

Send a PDF + steps

POST your file with a steps pipeline (the same operations the visual editor builds).

2

We impose it

Grid, cards, booklet, n-up, cut-&-stack, marks, bleeds, color — server-side, in milliseconds.

3

Get a print-ready PDF

Download the imposed PDF (or a zip of outputs). Metered by the document, billed clearly.

Three ways to call it

curl
curl https://api.pdfpress.app/v1/impose \
  -H "Authorization: Bearer imp_live_…" \
  -F [email protected] \
  -F 'steps=[{"kind":"Grid","columns":2,"rows":2}]' \
  -o imposed.pdf
JavaScript
const body = new FormData();
body.append("file", fileBlob, "input.pdf");
body.append("steps", JSON.stringify([{ kind: "Grid", columns: 2, rows: 2 }]));

const res = await fetch("https://api.pdfpress.app/v1/impose", {
  method: "POST",
  headers: { Authorization: "Bearer imp_live_…" },
  body,
});
const imposed = await res.arrayBuffer();
Python
import requests

r = requests.post(
    "https://api.pdfpress.app/v1/impose",
    headers={"Authorization": "Bearer imp_live_…"},
    files={"file": open("flyer.pdf", "rb")},
    data={"steps": '[{"kind":"Grid","columns":2,"rows":2}]'},
)
open("imposed.pdf", "wb").write(r.content)

Endpoints

POST/v1/impose
Impose a PDF with a steps pipeline — grid, cards, booklet, n-up, cut-&-stack, and more.
POST/v1/preflight
Preflight x-ray: page boxes, fonts, color, and structure.
POST/v1/optimize
Linearize and shrink a PDF (qpdf).
POST/v1/color-convert
Convert to CMYK / grayscale / RGB with an ICC profile (Ghostscript).
GET/v1/operations
Discover every operation kind, its fields, and defaults.
GET/v1/jobs/{id}
Poll large/async jobs to completion.

Simple, prepaid GiB pricing

You buy GiB of processing and spend it by the input bytes you send — unlimited calls, no per-job minimum, no monthly reset. Credits never expire; every account starts with 250 MiB free.

Free

$0

250 MiB to start · no card

Start free

3 GiB

Popular
$6.99 once

3 GiB of processing · never expires

Buy 3 GiB

50 GiB

$49.99 once

50 GiB of processing · never expires

Buy 50 GiB

Enterprise

Custom

Volume GiB · SLA

Contact sales

GiB packs that never expire: 3 GiB / $6.99 · 50 GiB / $49.99 — top up anytime. Need the desktop app or CLI? The Desktop ($299/yr) and CLI ($999/yr) plans use the same key.

See all plans →

Design it visually → ship it as an API call

Build your imposition in the visual editor, then hit Export as API call — PDF Press serializes your exact pipeline into ready-to-paste curl, JavaScript, and Python, pre-filled with your key. No reading the schema by hand.

Open the editor →

API FAQ

How is the API metered?

By the input bytes you process, drawn from a prepaid GiB balance — unlimited number of calls, you only spend the bytes you send. A 3 GiB pack handles a lot of real-world imposition work; top up whenever you like.

How is this different from PDF Snake's API?

PDF Snake bills the API in opaque prepaid bytes with a 4 MB minimum per job. PDF Press has no per-job minimum and never expires your balance — you spend exactly the input bytes you send, and the same key also activates the desktop app.

Do credits expire?

No — prepaid GiB packs (3 GiB / $6.99, 50 GiB / $49.99) never expire. Every signed-in account also starts with 250 MiB free. Top up anytime to keep jobs running.

What's the request shape?

POST multipart with your file plus a steps JSON array, or send JSON with base64 files. You get the imposed application/pdf back — or a zip with Accept: application/zip. Large jobs run async (202 + a job id).

Is the same key usable on the desktop app?

Yes. One PDF Press account, one key — it activates the web app, the desktop app, and the API.

Start imposing programmatically

Free starter credits, no card required. Create a key, paste the curl above, and get a print-ready PDF back in one call.

Get your API key →