Skip to content
Async callbacks, idempotency keys and automatic failover

Turn any URL into a pixel-perfect PDF.

One API call renders invoices, reports and receipts with real Chrome, on infrastructure built to keep working when things go wrong. Pay only for PDFs that succeed.

Try any public URL. Demo renders are watermarked and rate limited.

Developer experience

Ship PDF generation in five minutes.

Send a URL, get a PDF. Every option has a sensible default, errors come back as structured problem details with stable codes, and the whole API is described by an OpenAPI document.

  • Bearer API keys per project, shown once and stored hashed
  • A4, Letter or custom sizes, margins, headers and footers
  • Wait for selectors or a window.pdfReady signal
  • Signed webhooks with HMAC-SHA256 and timestamps
curl -X POST https://pdfgen.arsi.in/v1/pdf \
  -H "Authorization: Bearer pk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/invoice/42", "pdf": {"format": "a4"}}' \
  -o invoice.pdf

Why PDFGen

PDF generation is your core workflow. We treat it that way.

Resilient by design

Two rendering engines with automatic failover, circuit breakers and jittered retries. Transient failures never reach your users.

Fast, globally

Headless Chrome on a global edge network, close to your users and your pages. No browsers for you to run.

Sync or async

Get the PDF in the response, or pass a callback_url and receive it as a signed webhook with automatic retries.

Built for JS-heavy pages

Ready signals, selector waits, lazy-image scrolling, print CSS emulation and animation freezing for pixel-perfect output.

Safe to retry

Idempotency keys mean a retried request never renders or bills twice. Failed renders are never charged.

Projects & keys

Separate projects per app or environment, each with its own API keys, usage and webhook secret.

Pricing

Simple plans. Credits when you need more.

Start free. Upgrade when you grow. Top up with credits that never expire.

Frequently asked questions

Anything else? Read the docs.

What is PDFGen?
PDFGen is an HTTP API that converts any public web page into a PDF. Send a URL to POST /v1/pdf and get the PDF back, or pass a callback_url and receive it as a signed webhook.
What can I convert?
Any publicly reachable URL: invoices, reports, receipts, tickets, dashboards. Pass headers or cookies to render pages behind your own auth.
How do I render JavaScript-heavy pages or single-page apps?
Wait for a CSS selector with wait.selector, or set window.pdfReady = true in your page and send wait.ready_signal: true. Use auto_scroll for lazy-loaded images and hide_selectors to remove cookie banners.
Am I charged for failed renders?
No. A unit of quota is reserved when a request starts and only committed if a valid PDF is produced. Failures, including pages that can't be reached, release the reservation automatically.
What happens when I run out of my monthly quota?
Requests draw from prepaid credits if you have any. Otherwise the API returns HTTP 402 until your plan renews or you top up.
How do callbacks work?
Add callback_url to your request and the API responds immediately with 202. When the PDF is ready it is POSTed to your URL, signed with your project's webhook secret, and retried for up to about 20 hours if your endpoint is down.
Can I cancel anytime?
Yes. Cancelling keeps your plan active until the end of the paid period. Unused credits never expire.

Your first PDF is one request away.

Sign in with your email, create a project, and render. No credit card required.

Get started free