← All updates

Account-level font uploads

Upload TTF or OTF fonts once at the account level and reference them by family name from any template — no per-request `fonts:` payload required.

fontsapi

You can now upload custom fonts once at the account level and use them across every template, without re-sending the bytes on every render.

  • Upload at /settings/fonts — TTF or OTF, max 5 MB per variant.
  • Variable fonts are rejected with a clear error (we don't support them yet).
  • Up to 4 families per account, 6 variants per family.
  • Fonts are subsetted on registration and cached in KV.

Once uploaded, just reference the family in your DSL styles:

text({ "font-family": "Brand", "font-weight": "bold" }, "Hello");

The per-request fonts: payload on /preview and /render still works for one-off cases, but accounts that use the same brand fonts everywhere don't have to ship them on each call any more.

This is also the supported path for non-Latin European scripts (Cyrillic, Greek, Vietnamese, Georgian, Armenian) — see the pdf-fonts skill.