Skip to main content
Every account renders from the built-in catalogue: the full open-licensed Google Fonts library, 2,000+ families under the OFL, Apache and UFL licences, free to use in commercial work. Pro and Scale plans can also upload their own TTF and OTF files.

Browse the catalogue

search matches family names without regard to case, category takes an exact value such as serif or sans-serif, and scope narrows the result to system for the catalogue alone or custom for your own uploads. page and per_page page through the result, up to 100 per page.
Keep uuid or postscript_name: either one addresses the font in a render.

Use a font in a render

Set font on a text layer override.
Omit font and the layer renders in the typeface the designer chose. Send it and the render uses yours, at the size and colour you set alongside it. See Text layers for the rest of the override. A uuid is the exact address, while a PostScript name is the readable one. Prefer the uuid when a name could match more than one font available to you: an ambiguous name returns 422 FONT_AMBIGUOUS with a candidates list rather than choosing for you.

Upload your own font

POST /api/v1/fonts takes one TTF or OTF file, up to 5 MB, on Pro and Scale plans. Pro includes 10 custom fonts and Scale is unlimited. Free and Starter plans render from the catalogue.
A public URL works in place of a file upload.
Both forms require license_confirmed: true, confirming you hold the right to use and embed the font. Without it the upload returns 422 with Confirm you have the right to use and embed this font. The 201 response carries the font’s uuid and postscript_name, which is what you send in a render from then on.
Upload each weight you intend to render as its own file. A brand family with Regular, Medium and Bold is three uploads and three PostScript names.

Get or delete a font

GET /api/v1/fonts/{uuid} returns a catalogue font or one of your own. DELETE /api/v1/fonts/{uuid} removes one of your uploads and returns { "success": true }. Catalogue fonts are read-only and cannot be deleted. Deleting a custom font is permanent, so update any template or stored request that names its uuid first.

When a font is missing

If you send no replacement font, the layer renders in its original typeface where that is available. If an original or resolved catalogue font file cannot be loaded at render time, the render still succeeds in a default font and returns a TEXT_FONT_FALLBACK warning.
A font you explicitly requested behaves differently: it does not fall back. An unavailable name returns 422 FONT_NOT_FOUND, so an exact brand typeface can never be silently swapped for something else. Check font_available on each text layer in the upload response and you know which templates will fall back before you render one.
A font that is present but lacks some characters in your replacement text returns TEXT_FONT_MISSING_GLYPHS, so the fix is to pick a family that covers the script you are rendering.

Text layers

Address a layer, override its wording, and read the support matrix.

Fonts reference

Every parameter and response field on the fonts endpoints.