---
title: "Upload workspace font"
method: POST
path: "/api/fonts"
---

# Upload workspace font

`POST /api/fonts`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/fonts`
- Auth: HTTP bearer

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Uploads a font file to the workspace. Send it as `multipart/form-data` in a field named `file`.

Workspace fonts are font files the workspace uploaded, which every app in the workspace can use. Each font is one weight and style of a family, so a family with a regular and a bold weight is two fonts. Upload one file per weight and style.

The file can be TrueType, OpenType, WOFF or WOFF2, up to 5 MB. A WOFF or WOFF2 file must also expand to no more than 32 MB uncompressed. Font collections (`.ttc`) aren't supported. Base44 reads the family name, weight and style from the file itself, not from its file name, and stores the font as WOFF2.

When the workspace already has a font with the same family name, ignoring case, weight and style, you get that font back and the file you sent is discarded, so retrying an upload is safe below the font limit. A family name that's already a Google Fonts family is refused, and so is an upload once the workspace has 256 fonts.

In this response, `created_date` includes a `+00:00` offset for a newly added font.

Fonts belong to the workspace your credential is for. With a personal access token, that's the token's workspace, and there's no parameter to choose another one.

Uploads are limited to 30 a minute for each workspace.

<Note>Call this as an owner, admin, or editor of the workspace, with a personal access token sent as a Bearer token, or from a signed-in session. A read-only token is refused, and workspace API keys aren't accepted.</Note>

## Request body `multipart/form-data`

- UploadWorkspaceFont
  - `file` string, binary, required: The font file: TrueType, OpenType, WOFF or WOFF2, up to 5 MB.

## Response `200`

The uploaded font, or the existing font with the same family, weight and style.

- WorkspaceFont: One uploaded font: a single weight and style of a family.
  - `id` string, required: ID of the font.
  - `family_name` string, required: Family name, read from the font file. Use it as the CSS `font-family`.
  - `display_family_name` string, nullable, required: The broader family the font file says it belongs to, which groups stylistic variants such as an inline cut, or `null` when the file doesn't say.
  - `variant_name` string, nullable, required: Name of the stylistic variant, or `null` when the file doesn't name one.
  - `weight` integer, required: Weight from 1 to 1000, usually a multiple of 100.
  - `style` 'normal' | 'italic', required: Style of the font.
  - `public_url` string, required: Public URL of the font as a WOFF2 file, for an `@font-face` `src`.
  - `created_by` string, required: Email of the member who uploaded the font.
  - `created_date` string, required: When the font was uploaded, as a UTC timestamp in ISO 8601 format.

## Other responses

- `400`: The file is over 5 MB, is a WOFF or WOFF2 that expands past 32 MB, isn't a font Base44 can read, is a font collection, or its family name is empty, over 100 characters, or contains characters such as `/`, `,`, `_`, quotes or brackets. `detail` carries a code for the reason, such as `file_too_large`.
- `401`: Missing or invalid credentials.
- `403`: You aren't an owner, admin, or editor of the workspace, your token is read-only, or your credential can't be used on this endpoint.
- `409`: Your workspace requires an unlocked SSO session.
- `422`: `file` is missing.
- `429`: Rate limit exceeded.

## Changes

- **2026-10-11** `80287813ab84`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-10** `fc604cdcc3a2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/idealspot/apis/base44-app-management-api/changes/api/fonts/post.md)

---

[API](https://skmtc.dev/idealspot/apis/base44-app-management-api.md) - [All operations](https://skmtc.dev/idealspot/apis/base44-app-management-api/llms.txt) - [OpenAPI document](https://skmtc.dev/idealspot/apis/base44-app-management-api/revisions/b5b4ebd82a1e?raw)
