Generate fonts, fetch glyphs and manage delivery programmatically. Same engine as the app, one bearer token away.
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.
Sign in to get your keyRequests 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 | |
| Pro | 200 · 2 000 / min |
| Studio | 600 · 6 000 / min |
Need more throughput? Upgrade your plan.
Generate a complete font family from a text prompt and/or a reference image. Returns a job you poll for completion.
| promptrequired | Plain-language description of the typeface. Optional when reference_image_url is set. |
| reference_image_url | Style 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. |
| languages | Array of ISO codes — defaults to ["en"]. Two-letter ISO codes, full list: GET /api/public/languages. |
| weights | e.g. ["normal","bold","thin"]. |
| glyph_types | letters · digits · punct · special (default all). |
| model_tier | standard (Epicur ×1) · pro (Spinoza ×3) · ultra (Nietzsche ×5). |
Fetch a font's status and download URLs (TTF / WOFF2 / variable).
Download the built font file in a specific format (ttf/otf/woff/woff2) — same file the Studio download button produces.
Every supported ISO-2 language code, with per-script glyph counts and text direction — use it to build a valid "languages" array.
Your last 100 font jobs — status, model, source and a link to each font's page.
Generation is async. After POSTing to generate, poll GET /api/public/status?link=… every few seconds until the status is font_ready (or failed).
| status | queued · processing · font_ready · failed |
| progress | { total, completed, failed } — how many glyph atlases are done |
| fonts | Direct 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.
All errors follow a consistent JSON shape: { "success": false, "error": "…" }.
| 400 | Bad request — missing or invalid fields. Check the error for details. |
| 401 | Unauthorized — missing or invalid Authorization header. |
| 402 | Payment required — glyph quota exhausted. Top up on the Plans page. |
| 403 | Forbidden — the link belongs to another account. |
| 404 | Not found — the font ID does not exist or belongs to another account. |
| 429 | Too many requests — rate limit hit. Retry after Retry-After. |
| 500 | Internal 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"
}
MCP (Model Context Protocol) lets AI coding agents — Claude Code, Cursor, Codex and others — call YoFont directly while they work: generate a font mid-conversation, wait for it to build, and drop the file straight into your project. No copy-pasting curl commands.
Every MCP tool call is a thin, transparent wrapper over the same REST endpoints documented on the API tab — same auth, same rate limits, same validation. Nothing the MCP server does is hidden from the REST docs.
Copy the prompt below and paste it into Claude Code, Cursor or Codex. Your agent registers the YoFont MCP server itself and verifies it — no config files to edit by hand.
Get your key from the Authentication section on the API tab.
Point your MCP client at https://yofont.com/api/public/mcp. It speaks Streamable HTTP transport (JSON response mode) — one JSON-RPC 2.0 request per call, no session/socket to keep open.
| Transport | Streamable HTTP (JSON-RPC 2.0 over POST). Methods: initialize, ping, tools/list, tools/call. |
| Auth | Same API key as the REST API — send it as a header on every request: Authorization: Bearer yf_live_.... |
Five tools, one-to-one with the REST endpoints on the API tab — nothing exists in MCP that isn't also plain REST.
Generate a brand-new font family from a prompt and/or a reference image. Returns immediately with a link to poll — this is an async job, not a blocking call.
| prompt | Plain-language style description. Optional if reference_image_url is given. |
| reference_image_url | Direct public image URL — it just needs to be publicly fetchable at call time. |
| languages, weights, glyph_types, model_tier | Same shape and defaults as the REST endpoint — see the API tab's Create font section. |
Poll a font job's build progress. Once ready, returns direct ttf/otf/woff/woff2 URLs — fetch those directly, no auth required.
| linkrequired | The font link returned by generate_font. |
Fetch a font file's bytes inline as an MCP resource, so your agent can write it straight to disk in your project. Falls back to a plain URL if the file is unusually large.
| linkrequired | The font link returned by generate_font. |
| format | ttf · otf · woff · woff2 — default ttf. |
List every supported ISO-2 language code with glyph counts and text direction — use it to build a valid languages array.
List your last 100 font jobs — status, model, source and a link to each font's page.
MCP tools are only as good as the prompt behind them. These get consistently strong results:
"Generate a friendly, rounded sans-serif for a kids' education app, in English and Spanish, normal and bold weights — then save the ttf files into ./public/fonts."
Names the mood, the languages, the weights, and where to put the result — the agent can run the whole loop unattended.
"Here's a screenshot of our old logo: https://example.com/logo.png — generate a display font that matches its style, ultra quality, English only."
Reference images beat adjectives for matching a specific existing look — model_tier: ultra is worth it for hero/display type.
"Check the status of font 8WeheWlTl and tell me when it's ready, then give me the woff2 URL."
A simple poll-and-report — good for checking on a job you started earlier in the conversation.
"What Cyrillic and Greek languages does YoFont support? I need a font covering Russian, Ukrainian and Greek."
Let the agent call list_languages instead of guessing ISO codes from memory — avoids a failed generate_font call over a typo'd code.
"Generate a geometric display font from this reference image, wait for it to finish, then download the ttf and add it to our Tailwind config as a custom font-face."
Chains all three tools in one instruction — generate → poll → download — and hands the agent a concrete next step.
"Show me all my fonts and tell me which ones are still queued or failed."
Good for a status sweep across a whole project without opening the dashboard.
One request from you can trigger the whole pipeline — your agent handles the polling loop, you just see the result.