PDFPipe

What you send / POST /v1/pdf with url

Convert a URL to PDF with an API

Give an address instead of markup and the renderer fetches the page itself.

What it is for

The right shape when the document already exists on the web: a published report, a public invoice page, a dashboard with a share link. It avoids serialising a large document into a request body, and it means the page can pull its own stylesheets and images from the same origin rather than needing them inlined.

The request

Sent to POST /v1/pdf with url. Everything else on this page is what happens around it.

bash
curl -X POST https://api.pdfpipe.xyz/v1/pdf \
  -H "Authorization: Bearer $PDFPIPE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/reports/2026-q1",
    "options": { "format": "A4", "print_background": true }
  }' \
  --output report.pdf

The actual limits

Read from the implementation rather than remembered, so these are the numbers the API enforces rather than the ones a roadmap intends.

  • The URL must be a string of at most 2,048 characters, and the scheme must be http or https.
  • The hostname is resolved and every address it resolves to must be publicly routable. A URL pointing at a private range, at localhost, or at a name that resolves into one is rejected with ssrf_blocked.
  • That check is re-run on redirects, so a public URL that redirects to an internal one does not get through.

What failure looks like

A private or reserved address returns 400 with ssrf_blocked. A URL that is syntactically invalid or over the length limit returns 400 with invalid_request. A page that returns a login screen renders the login screen: the renderer has no session and no cookies, so anything behind authentication comes out as whatever an anonymous visitor sees.

When this is the wrong tool

Anything behind a login, and anything internal. The SSRF guard is not a setting: an internal dashboard is unreachable by design, and the way to render one is to have your own application produce the markup and post it. It is also wrong for per-customer documents, because publishing an invoice at a fetchable address to render it is a data exposure with a rendering step attached.

Frequently asked

Is render a url available on the free plan?

Yes. There is no plan gate on this one: it behaves the same on the free plan as on every paid plan, and the only limit that applies is the monthly document allowance.

Where do these numbers come from?

The running implementation. Every figure on this page, from payload ceilings to per-plan limits, is what the API enforces today rather than what a specification says it should. If one of them is wrong, the API is the thing to believe.

Related capabilities

Options that come up in the same request, and one from each of the other groups.

100 free documents a month, and a playground that runs a real render without a key.