# General Translation Platform: Upload Project assets
URL: https://generaltranslation.com/en-US/docs/platform/openapi/reference/project/upload-assets.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 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. API reference for Upload Project assets.

## Endpoint

`POST https://api.gtx.dev/v2/project/assets`

**Operation ID:** `uploadAssets`

**Tags:** `Project`

**Summary:** Upload Project assets

Upload OpenType or TrueType fonts for Lottie translations across your Organization. Uploading the same font family, weight, and italic style replaces the existing font. You can safely retry the full upload after a `500` response.

Authentication: required. Send an API key in the `Authorization: Bearer <key>` header when authenticating.

### Parameters

- `gt-api-version` (header, "2025-01-01.v0" | "2025-11-03.v1" | "2026-02-18.v1" | "2026-03-06.v1", optional): API contract version. Defaults to the oldest supported version.
- `gt-project-id` (header, string, optional): Target project ID when no project ID is present in the path. Project API keys default to their bound project. If supplied, the header must match both the path target and the key’s bound project.

### Request body (required)

Body (`application/json`, object):
- `assets` (object[], required)
  - `assetType` ("FONT", required)
  - `content` (string, required)
  - `fileName` (string, required)
  - `family` (string)
  - `style` (string)

### Responses

**201**: Uploaded assets
Response body (`application/json`, object):
- `assets` (object[], required)
  - `id` (string, required)
  - `assetKey` (string, required)
  - `fileName` (string, required)
- `count` (integer, required)

**400**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**401**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**403**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**404**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**413**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**429**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

**500**: Request error
Response body (`application/json`, object):
- `error` (string, required)

Response body (`text/html`, string):

Complete OpenAPI 3.1 specification: https://generaltranslation.com/openapi.yaml

OpenAPI schema: [openapi.json](https://generaltranslation.com/openapi.json)

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
