๐ŸŽ“ Use case

Issue PDF certificates
at scale, automatically

Generate beautiful, branded completion certificates for every course graduate, event attendee, or achievement. Trigger from a webhook โ€” no manual exports.

๐ŸŽจ
Fully custom design
Use any HTML/CSS design โ€” ornate borders, background images, custom fonts, watermarks, logos. Renderly renders it all.
๐Ÿ“
Landscape or portrait
Certificates typically use landscape A4 or Letter. Configure format and orientation per request.
โšก
One certificate or thousands
Issue certificates one-by-one or batch-generate for all graduates at course completion.
๐Ÿ”—
Webhook-triggered
Connect to your LMS or event platform. When a user completes a course, fire a webhook and Renderly generates the certificate.
๐Ÿ–‹๏ธ
Personalized per recipient
Inject recipient name, date, course title, and unique certificate number into each PDF via your template.
๐Ÿ“ง
Email-ready PDFs
The returned PDF is ready to attach to a confirmation email or upload to your storage bucket.

Code example (Node.js)

issue-certificate.js
<span class="kw">async function</span> <span class="fn">issueCertificate</span>({ name, course, date, certId }) {
  <span class="kw">const</span> html = <span class="str">`
    &lt;!DOCTYPE html&gt;
    &lt;html&gt;
    &lt;head&gt;
      &lt;style&gt;
        @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; }
      &lt;/style&gt;
    &lt;/head&gt;
    &lt;body style="text-align:center;padding:60px"&gt;
      &lt;h1&gt;Certificate of Completion&lt;/h1&gt;
      &lt;p style="font-size:22px"&gt;This certifies that &lt;strong&gt;${name}&lt;/strong&gt;&lt;/p&gt;
      &lt;p&gt;has completed &lt;strong&gt;${course}&lt;/strong&gt; on ${date}&lt;/p&gt;
      &lt;p style="color:#888;font-size:11px"&gt;Certificate ID: ${certId}&lt;/p&gt;
    &lt;/body&gt;&lt;/html&gt;
  `</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>());
}

Other use cases

Start issuing certificates

Free tier โ€” 50 PDFs/month. No credit card required.

Get your free API key โ†’