---
title: "Upload a brand font"
method: POST
path: "/brands/{id}/font-assets"
tags: ["Brands"]
---

# Upload a brand font

`POST /brands/{id}/font-assets`

## Request

- Base URL: `https://www.rainbrand.com/api/v1`
- URL: `https://www.rainbrand.com/api/v1/brands/{id}/font-assets`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://www.rainbrand.com/api/auth/oauth2/authorize`
    - Token URL: `https://www.rainbrand.com/api/auth/oauth2/token`

Upload a custom font for use in a [Brand Edit](/api-reference/brands/create-a-brand-edit); uploading it alone does not change the brand.

## Path parameters

- `id` string, uuid, required: Brand ID

## Request body

- object
  - `uploadId` string, uuid, required: Completed temporary upload from POST /uploads

## Response `200`

OK

- object
  - `data` object, required
    - `id` string, uuid, required
    - `family` string, required
    - `format` 'ttf' | 'otf' | 'woff' | 'woff2', required
    - `weight` integer, required
    - `variable` boolean, required
    - `expiresAt` string, date-time, required: Expiry timestamp for this single-use font asset. The consuming Brand Edit must finish preparing before this time; starting before expiry is not sufficient.

## Other responses

- `400`: 400
- `401`: 401
- `403`: 403
- `404`: 404
- `409`: 409
- `429`: 429
- `500`: 500

---

[API](https://skmtc.dev/rainbrand/apis/rainbrand-api.md) - [All operations](https://skmtc.dev/rainbrand/apis/rainbrand-api/llms.txt) - [OpenAPI document](https://skmtc.dev/rainbrand/apis/rainbrand-api/revisions/012b8e9da4df?raw)
