Letters
Offer letter PDF API
Offer letter template for HR workflows and hiring platforms. Keeps compensation, start date, signature, and legal paragraphs in a tidy PDF layout. Send this LaTeX template and JSON data to Texify in one /render request.
JSON schema
Fields this template expects.
| Field | Type | Required | Description |
|---|---|---|---|
| sender | object | Yes | Sender name and address. |
| recipient | object | Yes | Recipient name and address. |
| date | string | Yes | Letter date. |
| subject | string | Yes | Subject line. |
| body | array | Yes | Paragraphs rendered as letter body. |
API examples
POST LaTeX and JSON. Receive PDF bytes.
cat > offer-letter-payload.json <<'JSON'
{
"entrypoint": "main.tex",
"resources": {
"main.tex": "\\documentclass[11pt]{article}\n\\usepackage[margin=0.85in]{geometry}\n\\pagestyle{empty}\n\\begin{document}\n\\noindent [[ .sender.name ]]\\\\\n[[ .sender.address ]]\\\\[0.25in]\n[[ .date ]]\\\\[0.25in]\n\\noindent [[ .recipient.name ]]\\\\\n[[ .recipient.address ]]\\\\[0.25in]\n\\noindent\\textbf{Re: [[ .subject ]]}\\\\[0.2in]\n[[ range .body ]]\\noindent [[ . ]]\\\\[0.14in]\n[[ end ]]\n[[ with .compensation ]]\\noindent\\textbf{Compensation:} [[ . ]]\\\\[0.18in][[ end ]]\n\\noindent Sincerely,\\\\[0.35in]\n[[ with .signer ]][[ . ]][[ else ]][[ .sender.name ]][[ end ]]\n\\end{document}"
},
"data": {
"sender": {
"name": "Orbit AI",
"address": "44 Market St, SF"
},
"recipient": {
"name": "Mina Chen",
"address": "Austin, TX"
},
"date": "2026-07-07",
"subject": "Offer for Senior Engineer",
"body": [
"We are pleased to offer you the role of Senior Engineer.",
"Your anticipated start date is 2026-08-12."
],
"signer": null,
"compensation": "$185,000 base salary"
}
}
JSON
curl -sS -X POST https://api.texify.dev/render \
-H "Content-Type: application/json" \
--data @offer-letter-payload.json \
--output offer-letter.pdfimport json
import requests
payload = json.loads(r'''{
"entrypoint": "main.tex",
"resources": {
"main.tex": "\\documentclass[11pt]{article}\n\\usepackage[margin=0.85in]{geometry}\n\\pagestyle{empty}\n\\begin{document}\n\\noindent [[ .sender.name ]]\\\\\n[[ .sender.address ]]\\\\[0.25in]\n[[ .date ]]\\\\[0.25in]\n\\noindent [[ .recipient.name ]]\\\\\n[[ .recipient.address ]]\\\\[0.25in]\n\\noindent\\textbf{Re: [[ .subject ]]}\\\\[0.2in]\n[[ range .body ]]\\noindent [[ . ]]\\\\[0.14in]\n[[ end ]]\n[[ with .compensation ]]\\noindent\\textbf{Compensation:} [[ . ]]\\\\[0.18in][[ end ]]\n\\noindent Sincerely,\\\\[0.35in]\n[[ with .signer ]][[ . ]][[ else ]][[ .sender.name ]][[ end ]]\n\\end{document}"
},
"data": {
"sender": {
"name": "Orbit AI",
"address": "44 Market St, SF"
},
"recipient": {
"name": "Mina Chen",
"address": "Austin, TX"
},
"date": "2026-07-07",
"subject": "Offer for Senior Engineer",
"body": [
"We are pleased to offer you the role of Senior Engineer.",
"Your anticipated start date is 2026-08-12."
],
"signer": null,
"compensation": "$185,000 base salary"
}
}''')
response = requests.post(
"https://api.texify.dev/render",
json=payload,
timeout=90,
)
response.raise_for_status()
with open("offer-letter.pdf", "wb") as pdf:
pdf.write(response.content)import { writeFile } from "node:fs/promises";
const payload = {
"entrypoint": "main.tex",
"resources": {
"main.tex": "\\documentclass[11pt]{article}\n\\usepackage[margin=0.85in]{geometry}\n\\pagestyle{empty}\n\\begin{document}\n\\noindent [[ .sender.name ]]\\\\\n[[ .sender.address ]]\\\\[0.25in]\n[[ .date ]]\\\\[0.25in]\n\\noindent [[ .recipient.name ]]\\\\\n[[ .recipient.address ]]\\\\[0.25in]\n\\noindent\\textbf{Re: [[ .subject ]]}\\\\[0.2in]\n[[ range .body ]]\\noindent [[ . ]]\\\\[0.14in]\n[[ end ]]\n[[ with .compensation ]]\\noindent\\textbf{Compensation:} [[ . ]]\\\\[0.18in][[ end ]]\n\\noindent Sincerely,\\\\[0.35in]\n[[ with .signer ]][[ . ]][[ else ]][[ .sender.name ]][[ end ]]\n\\end{document}"
},
"data": {
"sender": {
"name": "Orbit AI",
"address": "44 Market St, SF"
},
"recipient": {
"name": "Mina Chen",
"address": "Austin, TX"
},
"date": "2026-07-07",
"subject": "Offer for Senior Engineer",
"body": [
"We are pleased to offer you the role of Senior Engineer.",
"Your anticipated start date is 2026-08-12."
],
"signer": null,
"compensation": "$185,000 base salary"
}
};
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("offer-letter.pdf", pdf);The template
LaTeX source sent as resources["main.tex"].
\documentclass[11pt]{article}
\usepackage[margin=0.85in]{geometry}
\pagestyle{empty}
\begin{document}
\noindent [[ .sender.name ]]\\
[[ .sender.address ]]\\[0.25in]
[[ .date ]]\\[0.25in]
\noindent [[ .recipient.name ]]\\
[[ .recipient.address ]]\\[0.25in]
\noindent\textbf{Re: [[ .subject ]]}\\[0.2in]
[[ range .body ]]\noindent [[ . ]]\\[0.14in]
[[ end ]]
[[ with .compensation ]]\noindent\textbf{Compensation:} [[ . ]]\\[0.18in][[ end ]]
\noindent Sincerely,\\[0.35in]
[[ with .signer ]][[ . ]][[ else ]][[ .sender.name ]][[ end ]]
\end{document}Live render
Try sample data now.
Posts this LaTeX template and sample JSON to /render, then opens the returned PDF bytes.
{
"sender": {
"name": "Orbit AI",
"address": "44 Market St, SF"
},
"recipient": {
"name": "Mina Chen",
"address": "Austin, TX"
},
"date": "2026-07-07",
"subject": "Offer for Senior Engineer",
"body": [
"We are pleased to offer you the role of Senior Engineer.",
"Your anticipated start date is 2026-08-12."
],
"signer": null,
"compensation": "$185,000 base salary"
}FAQ
FAQ
Can I use Offer letter as a offer letter 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.
Letters
Formal letter
Business letter template with sender block, recipient block, subject, body paragraphs, and signature. Good for notices, approvals, and generated correspondence.
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.
Certificates
Course certificate
Elegant completion certificate for online courses, LMS products, and developer education platforms. Designed to print well while keeping verification ids visible.