Certificates
Course certificate PDF API
Elegant completion certificate for online courses, LMS products, and developer education platforms. Designed to print well while keeping verification ids visible. Send this LaTeX template and JSON data to Texify in one /render request.
JSON schema
Fields this template expects.
| Field | Type | Required | Description |
|---|---|---|---|
| recipient_name | string | Yes | Name printed on the certificate. |
| title | string | Yes | Award, course, or credential title. |
| issued_on | string | Yes | Issue date. |
| issuer | object | Yes | Issuer organization and signer details. |
| certificate_id | string | No | Verification id or public credential code. |
API examples
POST LaTeX and JSON. Receive PDF bytes.
cat > course-certificate-payload.json <<'JSON'
{
"entrypoint": "main.tex",
"resources": {
"main.tex": "\\documentclass[12pt]{article}\n\\usepackage[margin=0.7in,landscape]{geometry}\n\\usepackage{xcolor}\n\\pagestyle{empty}\n\\begin{document}\n\\pagecolor{white}\n\\begin{center}\n\\vspace*{0.35in}\n{\\color{black}\\rule{0.92\\linewidth}{1pt}}\\\\[0.45in]\n{\\Huge\\bfseries Certificate of Achievement}\\\\[0.35in]\n{\\large This certifies that}\\\\[0.18in]\n{\\Huge\\bfseries [[ .recipient_name ]]}\\\\[0.22in]\n{\\large has successfully completed}\\\\[0.15in]\n{\\LARGE\\bfseries [[ .title ]]}\\\\[0.35in]\nIssued on [[ .issued_on ]] by [[ .issuer.organization ]]\\\\[0.5in]\n\\begin{tabular}{cc}\n\\rule{2.3in}{0.4pt} & \\rule{2.3in}{0.4pt}\\\\\n[[ .issuer.signer ]] & [[ .issuer.role ]]\\\\\n\\end{tabular}\\\\[0.3in]\n[[ with .certificate_id ]]Verification ID: \\texttt{[[ . ]]}[[ end ]]\\\\[0.35in]\n{\\color{black}\\rule{0.92\\linewidth}{1pt}}\n\\end{center}\n\\end{document}"
},
"data": {
"recipient_name": "Mina Chen",
"title": "Advanced TypeScript Systems",
"issued_on": "2026-07-01",
"issuer": {
"organization": "Compile School",
"signer": "Elena Park",
"role": "Program Director"
},
"certificate_id": "CERT-TS-2026-00941"
}
}
JSON
curl -sS -X POST https://api.texify.dev/render \
-H "Content-Type: application/json" \
--data @course-certificate-payload.json \
--output course-certificate.pdfimport json
import requests
payload = json.loads(r'''{
"entrypoint": "main.tex",
"resources": {
"main.tex": "\\documentclass[12pt]{article}\n\\usepackage[margin=0.7in,landscape]{geometry}\n\\usepackage{xcolor}\n\\pagestyle{empty}\n\\begin{document}\n\\pagecolor{white}\n\\begin{center}\n\\vspace*{0.35in}\n{\\color{black}\\rule{0.92\\linewidth}{1pt}}\\\\[0.45in]\n{\\Huge\\bfseries Certificate of Achievement}\\\\[0.35in]\n{\\large This certifies that}\\\\[0.18in]\n{\\Huge\\bfseries [[ .recipient_name ]]}\\\\[0.22in]\n{\\large has successfully completed}\\\\[0.15in]\n{\\LARGE\\bfseries [[ .title ]]}\\\\[0.35in]\nIssued on [[ .issued_on ]] by [[ .issuer.organization ]]\\\\[0.5in]\n\\begin{tabular}{cc}\n\\rule{2.3in}{0.4pt} & \\rule{2.3in}{0.4pt}\\\\\n[[ .issuer.signer ]] & [[ .issuer.role ]]\\\\\n\\end{tabular}\\\\[0.3in]\n[[ with .certificate_id ]]Verification ID: \\texttt{[[ . ]]}[[ end ]]\\\\[0.35in]\n{\\color{black}\\rule{0.92\\linewidth}{1pt}}\n\\end{center}\n\\end{document}"
},
"data": {
"recipient_name": "Mina Chen",
"title": "Advanced TypeScript Systems",
"issued_on": "2026-07-01",
"issuer": {
"organization": "Compile School",
"signer": "Elena Park",
"role": "Program Director"
},
"certificate_id": "CERT-TS-2026-00941"
}
}''')
response = requests.post(
"https://api.texify.dev/render",
json=payload,
timeout=90,
)
response.raise_for_status()
with open("course-certificate.pdf", "wb") as pdf:
pdf.write(response.content)import { writeFile } from "node:fs/promises";
const payload = {
"entrypoint": "main.tex",
"resources": {
"main.tex": "\\documentclass[12pt]{article}\n\\usepackage[margin=0.7in,landscape]{geometry}\n\\usepackage{xcolor}\n\\pagestyle{empty}\n\\begin{document}\n\\pagecolor{white}\n\\begin{center}\n\\vspace*{0.35in}\n{\\color{black}\\rule{0.92\\linewidth}{1pt}}\\\\[0.45in]\n{\\Huge\\bfseries Certificate of Achievement}\\\\[0.35in]\n{\\large This certifies that}\\\\[0.18in]\n{\\Huge\\bfseries [[ .recipient_name ]]}\\\\[0.22in]\n{\\large has successfully completed}\\\\[0.15in]\n{\\LARGE\\bfseries [[ .title ]]}\\\\[0.35in]\nIssued on [[ .issued_on ]] by [[ .issuer.organization ]]\\\\[0.5in]\n\\begin{tabular}{cc}\n\\rule{2.3in}{0.4pt} & \\rule{2.3in}{0.4pt}\\\\\n[[ .issuer.signer ]] & [[ .issuer.role ]]\\\\\n\\end{tabular}\\\\[0.3in]\n[[ with .certificate_id ]]Verification ID: \\texttt{[[ . ]]}[[ end ]]\\\\[0.35in]\n{\\color{black}\\rule{0.92\\linewidth}{1pt}}\n\\end{center}\n\\end{document}"
},
"data": {
"recipient_name": "Mina Chen",
"title": "Advanced TypeScript Systems",
"issued_on": "2026-07-01",
"issuer": {
"organization": "Compile School",
"signer": "Elena Park",
"role": "Program Director"
},
"certificate_id": "CERT-TS-2026-00941"
}
};
const response = await fetch("https://api.texify.dev/render", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload),
signal: AbortSignal.timeout(90_000),
});
if (!response.ok) throw new Error(await response.text());
const pdf = Buffer.from(await response.arrayBuffer());
await writeFile("course-certificate.pdf", pdf);The template
LaTeX source sent as resources["main.tex"].
\documentclass[12pt]{article}
\usepackage[margin=0.7in,landscape]{geometry}
\usepackage{xcolor}
\pagestyle{empty}
\begin{document}
\pagecolor{white}
\begin{center}
\vspace*{0.35in}
{\color{black}\rule{0.92\linewidth}{1pt}}\\[0.45in]
{\Huge\bfseries Certificate of Achievement}\\[0.35in]
{\large This certifies that}\\[0.18in]
{\Huge\bfseries [[ .recipient_name ]]}\\[0.22in]
{\large has successfully completed}\\[0.15in]
{\LARGE\bfseries [[ .title ]]}\\[0.35in]
Issued on [[ .issued_on ]] by [[ .issuer.organization ]]\\[0.5in]
\begin{tabular}{cc}
\rule{2.3in}{0.4pt} & \rule{2.3in}{0.4pt}\\
[[ .issuer.signer ]] & [[ .issuer.role ]]\\
\end{tabular}\\[0.3in]
[[ with .certificate_id ]]Verification ID: \texttt{[[ . ]]}[[ end ]]\\[0.35in]
{\color{black}\rule{0.92\linewidth}{1pt}}
\end{center}
\end{document}Live render
Try sample data now.
Posts this LaTeX template and sample JSON to /render, then opens the returned PDF bytes.
{
"recipient_name": "Mina Chen",
"title": "Advanced TypeScript Systems",
"issued_on": "2026-07-01",
"issuer": {
"organization": "Compile School",
"signer": "Elena Park",
"role": "Program Director"
},
"certificate_id": "CERT-TS-2026-00941"
}FAQ
FAQ
Can I use Course certificate as a certificate PDF API?
Yes. Copy the LaTeX template, send it in resources with your data to /render, and Texify returns PDF bytes.
Can I change colors, copy, or field names?
Yes. Edit the LaTeX source and JSON placeholders to match your data model and brand before posting to /render.
Does this render real PDF text?
Yes. Texify compiles LaTeX to PDF, so text remains selectable, searchable, and stable across environments.
Related templates
More LaTeX PDF templates.
Certificates
Award certificate
Formal award certificate with a balanced serif layout and signature block. Good for hackathons, partner programs, and employee recognition.
Badges
Conference badge
Printable event badge with attendee name, company, ticket tier, track, and QR-ready payload text. Good for conference platforms and check-in tools.
Resumes
Developer resume
Dedicated JSON to resume PDF template for software engineers, with projects, skills, links, and measurable impact bullets. Designed for LaTeX resume API searches and developer tooling workflows.