YoFont — AI font generator
Developers · REST v1

YoFont API/MCP

Generate fonts, fetch glyphs and manage delivery programmatically. Same engine as the app, one bearer token away.

// Authentication

All requests use a bearer token in the Authorization header. Keep it server-side.

Sign in to generate a live API key — API & MCP access is included with the Pro and Studio plans.

// Rate limits

Requests are limited per API key. Exceeding the limit returns 429 Too Many Requests with a Retry-After. Limits scale with your plan:

Create font · everything else
Pro200 · 2 000 / min
Studio600 · 6 000 / min

Need more throughput? Upgrade your plan.

POST/api/public/generate

Generate a complete font family from a text prompt and/or a reference image. Returns a job you poll for completion.

promptrequiredPlain-language description of the typeface. Optional when reference_image_url is set.
reference_image_urlStyle reference image (PNG/JPG/WEBP) — a direct public URL. We never store it; we forward the link as-is to the render engine, same as the Figma/Chrome plugins' screenshot-to-font.
languagesArray of ISO codes — defaults to ["en"]. Two-letter ISO codes, full list: GET /api/public/languages.
weightse.g. ["normal","bold","thin"].
glyph_typesletters · digits · punct · special (default all).
model_tierstandard (Epicur ×1) · pro (Spinoza ×3) · ultra (Nietzsche ×5).

                
200Accepted — returns { success, link, task_id, glyphs_charged, status_url }
// Response JSON

                
402Out of glyphs — top up on the Plans page
GET/api/public/status?link=…

Fetch a font's status and download URLs (TTF / WOFF2 / variable).

// Request

                
// Response JSON

                
GET/api/public/download?link=…

Download the built font file in a specific format (ttf/otf/woff/woff2) — same file the Studio download button produces.

// Request

                
// Response

                
GET/api/public/languages

Every supported ISO-2 language code, with per-script glyph counts and text direction — use it to build a valid "languages" array.

// Request

                
// Response JSON

                
GET/api/public/fonts

Your last 100 font jobs — status, model, source and a link to each font's page.

// Request

                
// Response JSON

                
// Polling

Generation is async. After POSTing to generate, poll GET /api/public/status?link=… every few seconds until the status is font_ready (or failed).

statusqueued · processing · font_ready · failed
progress{ total, completed, failed } — how many glyph atlases are done
fontsDirect ttf/otf/woff/woff2 URLs, present once status = font_ready.

A poll every 3–5 seconds is plenty — a full family typically finishes in under a couple of minutes. The font file URLs are static and need no auth once returned.

// Errors

All errors follow a consistent JSON shape: { "success": false, "error": "…" }.

400Bad request — missing or invalid fields. Check the error for details.
401Unauthorized — missing or invalid Authorization header.
402Payment required — glyph quota exhausted. Top up on the Plans page.
403Forbidden — the link belongs to another account.
404Not found — the font ID does not exist or belongs to another account.
429Too many requests — rate limit hit. Retry after Retry-After.
500Internal error — something went wrong on our end. Retrying after a few seconds usually works.
{
  "success": false,
  "error": "Not enough glyphs. Top up: https://yofont.com/plans"
}