Quickstart
Intended base URL https://api.getpdf.dev · Auth Authorization: Bearer df_…
This interface is not served from getpdf.dev yet. The homepage waitlist does not create a key.
POST/v1/render
curl -X POST $BASE/v1/render -H "Authorization: Bearer $KEY" \ -H 'content-type: application/json' \ -d '{"template_id":"invoice","data":{"number":"INV-1","currency":"$", "items":[{"description":"Work","qty":2,"price":50}]}, "options":{"format":"A4","landscape":false}}' -o invoice.pdf
template_id | template | htmldata {}format: A4 · Letter · Legallandscape↩ x-getpdf-usage
Templates





GET/v1/templates
POST/v1/templates { id, name, source, sample }
GET/v1/templates/:id
PUT/v1/templates/:id
DELETE/v1/templates/:id
GET/v1/usage
{{money v currency}}{{mul a b}}{{sum items "qty" "price"}}50 templates / keysource ≤ 256 KBprivate to your key
MCP server
{ "mcpServers": { "getpdf": { "command": "npx", "args": ["-y","getpdf-mcp"],
"env": { "GETPDF_API_KEY": "df_…" } } } }list_templatesget_templatecreate_templateupdate_templatedelete_templaterender_pdf → base64 PDF
Security
🧪 fresh context / render🚫 JS off by default🛡 SSRF guard: localhost · private IPs · 169.254.169.254 · file:// blocked🗑 PDFs never stored⏱ 2 MB in · 20 MB out · 15 s
Errors
400bad input
401bad key
402quota reached
403read-only / limit
404unknown template
409id conflict
413too large
504timeout
Failed renders don't count toward your quota.