Certificate template
A landscape certificate of completion with recipient, course, date and a verification ID you can look up later. Uses only system fonts so it renders identically everywhere.
Loading preview…
The actual PDF from the API. Open it full size
Render with your data
Built in as certificate. Send your JSON, get the PDF. The data shown is invented sample data.
curl https://api.pagenull.dev/v1/templates/certificate/render \
-H "Authorization: Bearer $PAGENULL_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"data": {
"issuer": "Example Academy",
"recipient": "Maria Ivanova",
"course": "Practical TypeScript",
"hours": 24,
"date": "3 November 2026",
"signatory": "Alex Example",
"signatoryRole": "Course lead",
"verifyId": "EXA-7Q2M-91KD"
}
}' \
-o certificate.pdfHTML source
Copy it into the dashboard to make your own version.
certificate.html
<!doctype html><html><head><meta charset="utf-8"><title>Certificate {{verifyId}}</title><style>
*{box-sizing:border-box}
html{-webkit-print-color-adjust:exact;print-color-adjust:exact}
body{margin:0;font-family:"Helvetica Neue", Helvetica, Arial, "Liberation Sans", "DejaVu Sans", sans-serif;color:#16181d;font-size:14px;line-height:1.5;text-rendering:geometricPrecision}
table{width:100%;border-collapse:collapse}
th{text-align:left;font-weight:700;color:#3d424a;font-size:12px;padding:0 0 8px;border-bottom:1.5px solid #16181d}
td{padding:11px 0;border-bottom:1px solid #d9dbd6;vertical-align:top}
tr{break-inside:avoid}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.muted{color:#4f545c}
.label{font-size:12px;font-weight:700;color:#4f545c;margin-bottom:4px}
html,body{height:100%}
.frame{height:100%;padding:64px 80px;border:16px solid #16181d;display:flex;flex-direction:column;justify-content:space-between}
.issuer{font-size:18px;font-weight:700;letter-spacing:-.01em}
h1{font-family:Georgia, "Times New Roman", "Liberation Serif", "DejaVu Serif", serif;font-weight:400;font-size:60px;line-height:1.05;margin:14px 0 0;letter-spacing:-.015em}
.lead{font-size:18px;color:#4f545c}
.name{font-family:Georgia, "Times New Roman", "Liberation Serif", "DejaVu Serif", serif;font-size:48px;line-height:1.1;margin:10px 0 14px;padding-bottom:10px;border-bottom:1.5px solid #16181d;display:inline-block;min-width:60%}
.what{font-size:19px;max-width:60ch}
.row{display:flex;justify-content:space-between;align-items:flex-end;font-size:15px}
.sig{border-top:1.5px solid #16181d;padding-top:8px;min-width:240px}
</style></head><body><div class="frame">
<div><div class="issuer">{{issuer}}</div><h1>Certificate of completion</h1></div>
<div><div class="lead">This certifies that</div><div class="name">{{recipient}}</div>
<div class="what">completed <strong>{{course}}</strong>, {{hours}} hours, on {{date}}.</div></div>
<div class="row"><div class="sig">{{signatory}}<br><span class="muted">{{signatoryRole}}</span></div><div class="muted">Verification ID {{verifyId}}</div></div>
</div></body></html>