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
Send a PDF + steps
POST your file with a steps pipeline (the same operations the visual editor builds).
We impose it
Grid, cards, booklet, n-up, cut-&-stack, marks, bleeds, color — server-side, in milliseconds.
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 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
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();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
/v1/impose/v1/preflight/v1/optimize/v1/color-convert/v1/operations/v1/jobs/{id}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.
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 →