Custom fonts API endpoints let you upload and manage custom fonts on a Webflow site.
It uses seven OAuth v2 endpoints under /v2/sites/{site_id}/custom_fonts.
The upload flow uses the same presigned-S3 handshake as the Assets API: Webflow returns signed S3 fields, and you POST the font binary directly to S3. The Webflow API server never receives the raw font bytes.
The API accepts the following font formats:
.woff2).woff).ttf).otf).eot)For security reasons, SVG fonts are not supported.
Sites that have pre-existing SVG fonts continue to return format: "svg" in read responses, but you cannot upload new SVG fonts through the API.
Uploading a font is a two-step process.
Send a POST request to /v2/sites/{site_id}/custom_fonts with the font metadata and the MD5 hash of the binary, as in this example:
The API returns 202 Accepted with a customFont object and an upload object.
The upload object contains a presigned url and a fields map to use in the next step.
Send a POST request that includes the font binary as multipart/form-data to upload.url.
Include every key from upload.fields as a form field, then append the binary in a field named file.
The file field must be the last field in the multipart form.
Any fields after file are ignored.
The API returns 201 Created on success.
The font is immediately available in the site’s typography picker and in published-site rendering.
This example shows how a foundry or font-platform app provisions a licensed font into a user’s Webflow site.
This example shows how an agency dashboard keeps the same brand fonts in sync across every site it manages.
This example shows how an AI agent uploads a brand font and verifies it is accessible before proceeding to dependent steps.
EntityTooLarge error.409 Conflict.