Fonts


Manage the custom fonts available to your project. Fonts are scoped to a single project — uploads through this API land in the project that owns the API token you authenticate with.

The uuid returned for each font is the font code that templates reference via the fontFamily field on text layers.

The font object

Properties

A single font object — returned by POST, GET /fonts/{uuid}, and PATCH:

{
    "uuid": "f1abc123def456",
    "title": "Helvetica Neue",
    "filename": "HelveticaNeue-Regular.ttf",
    "created_at": "2026-05-06T11:24:00+00:00"
}

The list endpoint wraps results in a cursor-paginated envelope:

{
    "data": [
        {
            "uuid": "f1abc123def456",
            "title": "Helvetica Neue",
            "filename": "HelveticaNeue-Regular.ttf",
            "created_at": "2026-05-06T11:24:00+00:00"
        }
    ],
    "links": {
        "first": null,
        "last": null,
        "prev": "...",
        "next": "..."
    },
    "meta": {
        "path": "https://api.placid.app/api/rest/fonts",
        "per_page": 20
    }
}
Field Values
font.uuid The font code. Use this value as the fontFamily on text layers when generating creatives.
font.title The display title you set when uploading the font.
font.filename The original filename of the uploaded font file.
font.is_legacy Only present when the request used ?include_legacy=1. true for legacy account-wide fonts (uploaded before per-project fonts existed); false for project-scoped fonts.
font.created_at ISO 8601 timestamp of when the font was uploaded.
data (Index only) Array of fonts.
links.prev (Index only) Link to previous cursored page.
links.next (Index only) Link to next cursored page.

List all fonts

Get a list of the custom fonts in your project. The endpoint returns 20 items per page using cursor pagination.

Endpoint

Method URI
GET https://api.placid.app/api/rest/fonts

Query Parameters

Name Type Description
include_legacy boolean (Optional) When truthy, also includes legacy account-wide fonts (those uploaded before per-project fonts existed). Defaults to false. Use this to get the full set of fonts usable in this project.

Examples

# Project-scoped fonts only (default)
curl -X GET https://api.placid.app/api/rest/fonts \
  -H "Authorization: Bearer YOUR_API_TOKEN"

# Project-scoped + legacy account-wide fonts
curl -X GET "https://api.placid.app/api/rest/fonts?include_legacy=1" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Retrieve a font

Get a single font by its uuid. Returns 404 if no font with that uuid exists in your project.

Endpoint

Method URI
GET https://api.placid.app/api/rest/fonts/{uuid}
Path parameter Description
uuid The font uuid (code).

Query Parameters

Name Type Description
include_legacy boolean (Optional) When truthy, also allows retrieving a legacy account-wide font (those uploaded before per-project fonts existed). Defaults to false.

Examples

curl -X GET https://api.placid.app/api/rest/fonts/f1abc123def456 \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Response

{
    "uuid": "f1abc123def456",
    "title": "Helvetica Neue",
    "filename": "HelveticaNeue-Regular.ttf",
    "created_at": "2026-05-06T11:24:00+00:00"
}

Upload a font

Upload a new custom font file to your project. The file is sent as multipart/form-data.

You must confirm that you have the right to use the font by sending a truthy terms_accepted value with every upload.

Endpoint

Method URI
POST https://api.placid.app/api/rest/fonts

Request

POST /api/rest/fonts HTTP/1.1
Host: api.placid.app
Authorization: Bearer YOUR_API_TOKEN
Content-Type: multipart/form-data

Content-Disposition: form-data; name="file"; filename="HelveticaNeue-Regular.ttf"
Content-Type: font/ttf

[Binary data for the font file]

Content-Disposition: form-data; name="title"

Helvetica Neue

Content-Disposition: form-data; name="terms_accepted"

1
Field Type Description
file file Required. The font file. Supported formats: ttf, otf, woff, woff2.
title string Optional display title. Falls back to the filename if omitted. Max 200 characters.
terms_accepted boolean Required. Must be truthy (1, true, yes, on). Confirms that you own the font or have the right to use it.

{info} Note: The font file must be sent as Content-Type: multipart/form-data.

Response

The created font is returned. Use the returned uuid as the fontFamily value on text layers.

{
    "uuid": "f1abc123def456",
    "title": "Helvetica Neue",
    "filename": "HelveticaNeue-Regular.ttf",
    "created_at": "2026-05-06T11:24:00+00:00"
}

Update a font

Update the display title of a font. The font file itself cannot be replaced — upload a new font instead if you need a different file.

Endpoint

Method URI
PATCH https://api.placid.app/api/rest/fonts/{uuid}
Path parameter Description
uuid The font uuid (code).

Request

curl -X PATCH https://api.placid.app/api/rest/fonts/f1abc123def456 \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Helvetica Neue Bold" }'
Field Type Description
title string Required. The new display title. Max 200 characters.

Response

The updated font is returned.

{
    "uuid": "f1abc123def456",
    "title": "Helvetica Neue Bold",
    "filename": "HelveticaNeue-Regular.ttf",
    "created_at": "2026-05-06T11:24:00+00:00"
}

Delete a font

Permanently delete a font from your project.

By default, if the font is still referenced by one or more templates the request fails with HTTP 409 Conflict and the response lists the blocking templates. Update or remove those references first, then retry — or pass force=1 to delete anyway.

Endpoint

Method URI
DELETE https://api.placid.app/api/rest/fonts/{uuid}
Path parameter Description
uuid The font uuid (code).

Query Parameters

Name Type Description
force boolean (Optional) When truthy, deletes the font even if templates still reference it. The references are not rewritten — those templates will fall back to the default font on the next render. Defaults to false.

Examples

# Default — fails with 409 if any template references the font
curl -X DELETE https://api.placid.app/api/rest/fonts/f1abc123def456 \
  -H "Authorization: Bearer YOUR_API_TOKEN"

# Force-delete even if templates still reference the font
curl -X DELETE "https://api.placid.app/api/rest/fonts/f1abc123def456?force=1" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Conflict response

If the font is still in use and force is not set, the response is 409 Conflict:

{
    "message": "Font is still in use and cannot be deleted. Pass force=1 to delete anyway.",
    "templates_using_font": [
        {
            "uuid": "tmpl_abc123",
            "title": "Instagram Story"
        }
    ]
}