Features

Thirty-one options. You will use six.

The defaults render a clean A4 with fonts and images already handled. The rest is there for the day your document gets complicated.

URL or raw HTML

Point at a page, or send the markup and let us fetch its assets. Templates you already render server-side work unchanged.

Smart waiting

Wait for network idle, a CSS selector, a document event, or a fixed delay. No more PDFs of your loading spinner.

1,100 bundled fonts

All of Google Fonts plus the usual system faces, with emoji and CJK coverage. Or upload your licensed brand font once.

Print or screen CSS

Choose which media type applies, inject extra CSS or JavaScript, and hide selectors that only make sense on screen.

PDF or image

Same request, different output: PDF, PNG, JPEG or WebP. Full page, viewport, or clipped to one element.

Deterministic output

Same input, same bytes. Pin the engine version per project so a document you archive today still renders identically next year.

Every ISO and US size

A0 through A6, Letter, Legal, Tabloid, Ledger — or an exact width and height for labels and tickets.

Headers, footers, page numbers

Send small HTML fragments that repeat on every printed page, with {page}, {total} and {date}.

Merge into one document

An ordered list of URLs or HTML blocks becomes a single PDF with continuous pagination, a cover and a table of contents.

Margins, scale, page ranges

Set margins per side, scale the content to fit, print a range, and force background colours to survive.

Watermarks

Stamp DRAFT, a customer name or a case number across every page, above or beneath the content.

PDF metadata

Title, author, keywords and subject written into the document.

Async renders

Accept the job in milliseconds and finish it in the background. Nothing sits behind a 30-second gateway limit.

Webhooks with retries

Signed callbacks on success and failure, retried with backoff for 24 hours, replayable from the dashboard.

Batch endpoint

Up to 500 jobs per call, each with its own options, one job id to poll. Partial failures come back itemised.

Storage & CDN

Hosted files on 200+ edge locations with a retention you set. Or push to your own S3, R2 or GCS bucket.

Caching by fingerprint

Identical requests inside your TTL return the stored file instantly and do not spend a credit.

Priority queue

Mark the render a user is waiting on as interactive; it jumps ahead of your own bulk jobs.

Signed URLs

HMAC the options with your secret and call the API from the client. The access key is public, the secret stays yours.

Auth pass-through

Cookies, bearer tokens, custom headers or basic auth, so private pages render without being made public.

Nothing kept by default

Without store the bytes exist only in the response. Stored files expire on your schedule, from one hour up.

EU or US rendering

Pin the region where pages are rendered and files are stored. DPA on request, GDPR-aligned by default.

Password & permissions

Encrypt the PDF, require a password to open, and restrict printing or copying at the file level.

Isolated sandboxes

Every render runs in a fresh sandbox with no shared cookies or cache, then is destroyed.

Field Type What it does
url string The page to render. Send html instead to render raw markup.
html string Raw markup to render. Relative assets can be resolved against a base_url.
format enum Paper size: A4, Letter, Legal and the rest of the ISO and US sets — or pdf/png/jpeg/webp output.
landscape boolean Rotate the page to landscape orientation.
margin object Margins per side, in mm, in, or px.
javascript boolean Run the page's scripts before printing, for content that builds on load.
wait_for string A CSS selector, event name, or network-idle mode to wait for before printing.
header_html string HTML fragment repeated at the top of every printed page.
footer_html string Footer fragment, with {page}, {total} and {date} placeholders.
merge array Ordered URLs or HTML blocks to print into one continuously paginated file.
watermark object Text or image stamped on every page, with opacity, angle and layer.
store boolean Keep the file and return a hosted CDN URL instead of raw bytes.
async boolean Return a job id immediately and finish the render in the background.
callback_url string Signed webhook called when the render succeeds or fails.
cache_ttl int Serve an identical earlier render for this many seconds. Cached hits are free.
region enum Where the page is rendered and the file is stored: eu or us.

Try it with your ugliest page.

The one with the web fonts, the lazy images and the chart that loads last. 100 credits, no card.