---
title: "Upload project assets"
method: POST
path: "/v2/project/assets"
tags: ["Project"]
---

# Upload project assets

`POST /v2/project/assets`

Upload OpenType or TrueType fonts through a project and make them available to Lottie translation workflows across its organization. Each font is keyed by a normalized identity derived from its family, weight, and italic style (from the supplied `family` and `style`, or from the font metadata and file name). Re-uploading the same identity overwrites the existing asset, so complete retries after a `500` response are safe.

## Headers

- `gt-api-version` '2025-01-01.v0' | '2025-11-03.v1' | '2026-02-18.v1' | '2026-03-06.v1'
- `gt-project-id` string

## Request body

- object
  - `assets` object[], required
    - `assetType` 'FONT', required — Asset type. Only `FONT` is supported.
    - `content` string, required — Base64-encoded font content, up to 20MB after decoding.
    - `fileName` string, required — Font file name ending in `.ttf` or `.otf`.
    - `family` string — Font family name used by the Lottie file. When omitted, the server derives it from the font metadata or file name.
    - `style` string — Style or weight used with `family`, such as `Bold`, `350`, or `Bold Italic`. Defaults to Regular (`400`) when `family` is set.

## Response `201`

Uploaded font assets.

- object
  - `assets` object[], required
    - `id` string — Stored organization asset ID.
    - `assetKey` string — Normalized identity in the form `<family>-<weight>[-i]`.
    - `fileName` string
  - `count` number, required — Number of uploaded assets.

## Other responses

- `400` — Invalid request body, invalid base64, an empty asset, an unsupported file extension, an asset larger than 20MB, or a font family that cannot be determined.
- `401` — Missing or invalid API key.
- `403` — The API key lacks the required permission, or the action is not allowed on the current plan.
- `404` — The requested resource was not found.
- `413` — The JSON request body exceeds 100MB.
- `429` — Rate limit or quota exceeded.
- `500` — An asset could not be stored. Retry the complete request; each font identity is upserted.

---

[API](https://skmtc.net/generaltranslation/apis/general-translation-api.md) · [All operations](https://skmtc.net/generaltranslation/apis/general-translation-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/generaltranslation/general-translation-api/revisions/7e9372f17040/schema)
