Every template here is reachable through the API, so you can generate the same document from your own data.
curl -X POST https://pdfgeny.com/api/v1/render \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"template":"cover-letter","data":{"company": "Northwind Studio Ltd", "company_details": "12 Bridge Street\nManchester M1 2AB", "recipient": "Ms Dana Whitfield", "recipient_details": "Acme Corporation\n500 Market Street\nSan Francisco, CA 94105", "date": "31 August 2026", "subject": "Application: Senior Software Engineer (ref. ENG-214)"}}' \
--output cover-letter.pdf
import requests
pdf = requests.post(
"https://pdfgeny.com/api/v1/render",
headers={"Authorization": f"Bearer {KEY}"},
json={"template": "cover-letter", "data": {'company': 'Northwind Studio Ltd',
'company_details': '12 Bridge Street\nManchester M1 2AB',
'recipient': 'Ms Dana Whitfield',
'recipient_details': 'Acme Corporation\n'
'500 Market Street\n'
'San Francisco, CA 94105',
'date': '31 August 2026',
'subject': 'Application: Senior Software Engineer (ref. '
'ENG-214)'}},
).content
open("cover-letter.pdf", "wb").write(pdf)
const res = await fetch("https://pdfgeny.com/api/v1/render", {
method: "POST",
headers: { Authorization: `Bearer ${KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({ template: "cover-letter", data: {"company": "Northwind Studio Ltd", "company_details": "12 Bridge Street\nManchester M1 2AB", "recipient": "Ms Dana Whitfield", "recipient_details": "Acme Corporation\n500 Market Street\nSan Francisco, CA 94105", "date": "31 August 2026", "subject": "Application: Senior Software Engineer (ref. ENG-214)"} }),
});
await writeFile("cover-letter.pdf", Buffer.from(await res.arrayBuffer()));