Texify

Shipping labels

Shipping label 4×6 PDF API

Standard 4×6 shipping label with large destination block, service level, tracking number, and barcode-ready text field. Built for warehouse apps and commerce backends. Send this LaTeX template and JSON data to Texify in one /render request.

Shipping label 4×6 PDF preview

JSON schema

Fields this template expects.

FieldTypeRequiredDescription
ship_fromobjectYesOrigin name and address.
ship_toobjectYesDestination name and address.
carrierstringYesCarrier or service label.
tracking_numberstringYesTracking number printed as text.
barcodestringYesBarcode-ready payload rendered as monospaced text.

API examples

POST LaTeX and JSON. Receive PDF bytes.

curl
cat > shipping-label-4x6-payload.json <<'JSON'
{
  "entrypoint": "main.tex",
  "resources": {
    "main.tex": "\\documentclass[10pt]{article}\n\\usepackage[paperwidth=4in,paperheight=6in,margin=0.18in]{geometry}\n\\usepackage{array}\n\\pagestyle{empty}\n\\begin{document}\\sffamily\n{\\Large\\bfseries [[ .carrier ]]}\\hfill [[ with .weight_oz ]][[ . ]] oz[[ end ]]\\\\\n\\rule{\\linewidth}{1pt}\n\\vspace{0.08in}\n\\noindent\\textbf{SHIP TO}\\\\\n{\\LARGE\\bfseries [[ .ship_to.name ]]}\\\\[4pt]\n{\\Large [[ .ship_to.address ]]}\\\\[0.25in]\n\\noindent\\textbf{FROM}\\\\\n[[ .ship_from.name ]]\\\\\n[[ .ship_from.address ]]\\\\[0.2in]\n[[ with .rma ]]\\noindent\\textbf{RMA:} [[ . ]]\\\\[0.12in][[ end ]]\n\\noindent\\textbf{TRACKING}\\\\\n{\\large\\texttt{[[ .tracking_number ]]}}\\\\[0.25in]\n\\fbox{\\begin{minipage}{0.92\\linewidth}\\centering\\vspace{0.25in}\n{\\Large\\texttt{[[ .barcode ]]}}\\\\[4pt]\n\\small Barcode-ready payload; render real bars via graphics when needed.\n\\vspace{0.25in}\\end{minipage}}\n\\end{document}"
  },
  "data": {
    "ship_from": {
      "name": "Dock 8 Fulfillment",
      "address": "120 Port Way, Oakland, CA"
    },
    "ship_to": {
      "name": "Jordan Lee",
      "address": "44 Pine St, Seattle, WA 98101"
    },
    "carrier": "UPS Ground",
    "tracking_number": "1Z999AA10123456784",
    "barcode": "1Z999AA10123456784",
    "weight_oz": 38,
    "rma": null
  }
}
JSON

curl -sS -X POST https://api.texify.dev/render \
  -H "Content-Type: application/json" \
  --data @shipping-label-4x6-payload.json \
  --output shipping-label-4x6.pdf
Python
import json
import requests

payload = json.loads(r'''{
  "entrypoint": "main.tex",
  "resources": {
    "main.tex": "\\documentclass[10pt]{article}\n\\usepackage[paperwidth=4in,paperheight=6in,margin=0.18in]{geometry}\n\\usepackage{array}\n\\pagestyle{empty}\n\\begin{document}\\sffamily\n{\\Large\\bfseries [[ .carrier ]]}\\hfill [[ with .weight_oz ]][[ . ]] oz[[ end ]]\\\\\n\\rule{\\linewidth}{1pt}\n\\vspace{0.08in}\n\\noindent\\textbf{SHIP TO}\\\\\n{\\LARGE\\bfseries [[ .ship_to.name ]]}\\\\[4pt]\n{\\Large [[ .ship_to.address ]]}\\\\[0.25in]\n\\noindent\\textbf{FROM}\\\\\n[[ .ship_from.name ]]\\\\\n[[ .ship_from.address ]]\\\\[0.2in]\n[[ with .rma ]]\\noindent\\textbf{RMA:} [[ . ]]\\\\[0.12in][[ end ]]\n\\noindent\\textbf{TRACKING}\\\\\n{\\large\\texttt{[[ .tracking_number ]]}}\\\\[0.25in]\n\\fbox{\\begin{minipage}{0.92\\linewidth}\\centering\\vspace{0.25in}\n{\\Large\\texttt{[[ .barcode ]]}}\\\\[4pt]\n\\small Barcode-ready payload; render real bars via graphics when needed.\n\\vspace{0.25in}\\end{minipage}}\n\\end{document}"
  },
  "data": {
    "ship_from": {
      "name": "Dock 8 Fulfillment",
      "address": "120 Port Way, Oakland, CA"
    },
    "ship_to": {
      "name": "Jordan Lee",
      "address": "44 Pine St, Seattle, WA 98101"
    },
    "carrier": "UPS Ground",
    "tracking_number": "1Z999AA10123456784",
    "barcode": "1Z999AA10123456784",
    "weight_oz": 38,
    "rma": null
  }
}''')
response = requests.post(
    "https://api.texify.dev/render",
    json=payload,
    timeout=90,
)
response.raise_for_status()

with open("shipping-label-4x6.pdf", "wb") as pdf:
    pdf.write(response.content)
Node fetch
import { writeFile } from "node:fs/promises";

const payload = {
  "entrypoint": "main.tex",
  "resources": {
    "main.tex": "\\documentclass[10pt]{article}\n\\usepackage[paperwidth=4in,paperheight=6in,margin=0.18in]{geometry}\n\\usepackage{array}\n\\pagestyle{empty}\n\\begin{document}\\sffamily\n{\\Large\\bfseries [[ .carrier ]]}\\hfill [[ with .weight_oz ]][[ . ]] oz[[ end ]]\\\\\n\\rule{\\linewidth}{1pt}\n\\vspace{0.08in}\n\\noindent\\textbf{SHIP TO}\\\\\n{\\LARGE\\bfseries [[ .ship_to.name ]]}\\\\[4pt]\n{\\Large [[ .ship_to.address ]]}\\\\[0.25in]\n\\noindent\\textbf{FROM}\\\\\n[[ .ship_from.name ]]\\\\\n[[ .ship_from.address ]]\\\\[0.2in]\n[[ with .rma ]]\\noindent\\textbf{RMA:} [[ . ]]\\\\[0.12in][[ end ]]\n\\noindent\\textbf{TRACKING}\\\\\n{\\large\\texttt{[[ .tracking_number ]]}}\\\\[0.25in]\n\\fbox{\\begin{minipage}{0.92\\linewidth}\\centering\\vspace{0.25in}\n{\\Large\\texttt{[[ .barcode ]]}}\\\\[4pt]\n\\small Barcode-ready payload; render real bars via graphics when needed.\n\\vspace{0.25in}\\end{minipage}}\n\\end{document}"
  },
  "data": {
    "ship_from": {
      "name": "Dock 8 Fulfillment",
      "address": "120 Port Way, Oakland, CA"
    },
    "ship_to": {
      "name": "Jordan Lee",
      "address": "44 Pine St, Seattle, WA 98101"
    },
    "carrier": "UPS Ground",
    "tracking_number": "1Z999AA10123456784",
    "barcode": "1Z999AA10123456784",
    "weight_oz": 38,
    "rma": null
  }
};

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("shipping-label-4x6.pdf", pdf);

The template

LaTeX source sent as resources["main.tex"].

main.tex
\documentclass[10pt]{article}
\usepackage[paperwidth=4in,paperheight=6in,margin=0.18in]{geometry}
\usepackage{array}
\pagestyle{empty}
\begin{document}\sffamily
{\Large\bfseries [[ .carrier ]]}\hfill [[ with .weight_oz ]][[ . ]] oz[[ end ]]\\
\rule{\linewidth}{1pt}
\vspace{0.08in}
\noindent\textbf{SHIP TO}\\
{\LARGE\bfseries [[ .ship_to.name ]]}\\[4pt]
{\Large [[ .ship_to.address ]]}\\[0.25in]
\noindent\textbf{FROM}\\
[[ .ship_from.name ]]\\
[[ .ship_from.address ]]\\[0.2in]
[[ with .rma ]]\noindent\textbf{RMA:} [[ . ]]\\[0.12in][[ end ]]
\noindent\textbf{TRACKING}\\
{\large\texttt{[[ .tracking_number ]]}}\\[0.25in]
\fbox{\begin{minipage}{0.92\linewidth}\centering\vspace{0.25in}
{\Large\texttt{[[ .barcode ]]}}\\[4pt]
\small Barcode-ready payload; render real bars via graphics when needed.
\vspace{0.25in}\end{minipage}}
\end{document}

Live render

Try sample data now.

Posts this LaTeX template and sample JSON to /render, then opens the returned PDF bytes.

Sample data
{
  "ship_from": {
    "name": "Dock 8 Fulfillment",
    "address": "120 Port Way, Oakland, CA"
  },
  "ship_to": {
    "name": "Jordan Lee",
    "address": "44 Pine St, Seattle, WA 98101"
  },
  "carrier": "UPS Ground",
  "tracking_number": "1Z999AA10123456784",
  "barcode": "1Z999AA10123456784",
  "weight_oz": 38,
  "rma": null
}

FAQ

FAQ

Can I use Shipping label 4×6 as a shipping label 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.