Generate beautiful, branded completion certificates for every course graduate, event attendee, or achievement. Trigger from a webhook โ no manual exports.
<span class="kw">async function</span> <span class="fn">issueCertificate</span>({ name, course, date, certId }) {
<span class="kw">const</span> html = <span class="str">`
<!DOCTYPE html>
<html>
<head>
<style>
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&family=Lato&display=swap');
body { background: url('/seal.png') center/cover; font-family: 'Lato', sans-serif; }
h1 { font-family: 'Playfair Display'; font-size: 48px; color: #1a1a2e; }
</style>
</head>
<body style="text-align:center;padding:60px">
<h1>Certificate of Completion</h1>
<p style="font-size:22px">This certifies that <strong>${name}</strong></p>
<p>has completed <strong>${course}</strong> on ${date}</p>
<p style="color:#888;font-size:11px">Certificate ID: ${certId}</p>
</body></html>
`</span>;
<span class="kw">const</span> res = <span class="kw">await</span> fetch(<span class="str">'https://api.renderlyapi.com/v1/pdf/from-html'</span>, {
method: <span class="str">'POST'</span>,
headers: { <span class="str">'Authorization'</span>: <span class="str">`Bearer ${process.env.RENDERLY_KEY}`</span>, <span class="str">'Content-Type'</span>: <span class="str">'application/json'</span> },
body: JSON.<span class="fn">stringify</span>({ html, format: <span class="str">'A4'</span>, landscape: <span class="kw">true</span> }),
});
<span class="kw">return</span> Buffer.<span class="fn">from</span>(<span class="kw">await</span> res.<span class="fn">arrayBuffer</span>());
}Free tier โ 50 PDFs/month. No credit card required.
Get your free API key โ