Convert HTML to PDF with curl
Render HTML to PDF from the command line with one curl call. No API key is needed to start.
Last updated
| Endpoint | POST /v1/render with a JSON body: html (required), filename (optional), pdf_variant (optional, paid plans) |
|---|---|
| Response | The PDF itself (application/pdf) |
Send your HTML as JSON to POST /v1/render, and the response body is
the PDF. This call works without an API key:
curl -X POST https://api.pdfrender.dev/v1/render \
-H 'Content-Type: application/json' \
-d '{"html": "<h1>Hello</h1><p>Rendered by pdfrender.</p>", "filename": "hello.pdf"}' \
-o hello.pdf
html is the whole HTML document as a string. filename is optional and
sets the name in the Content-Disposition header (default document.pdf).
Send a template file with an API key
For a real template, let jq build the JSON so quotes and line breaks
are escaped. Then pass the file with -d @:
jq -n --rawfile html invoice.html '{html: $html, filename: "invoice.pdf"}' > request.json
curl -X POST https://api.pdfrender.dev/v1/render \
-H 'Content-Type: application/json' \
-H "X-API-Key: $PDFRENDER_KEY" \
-d @request.json \
-o invoice.pdf -w '%{http_code}\n'
A status other than 200 means invoice.pdf holds a JSON error instead of a
PDF (error codes). A missing or invalid
key does not fail the call; it runs at the limit for calls without a key.
Images, fonts and stylesheets go into the HTML as data: URIs (how). The CSS support page lists which CSS works.
Next step
FAQ
- Do I need an API key to convert HTML to PDF with curl?
- No. Without a key, POST /v1/render gives 10 free renders a day per IP address. A free key adds 100 credits a month, used after the 10 free renders.
- How large can the HTML be?
- The html field can hold 2 MB of UTF-8 text. A larger request fails with status 413 (html_too_large).