Automette docs

Set the brand palette

PATCH
/api/v1/brand_kit

Authorization

ApiKeyAuth
AuthorizationBearer <token>

API key from Settings → API Keys.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/api/v1/brand_kit" \  -H "Content-Type: application/json" \  -d '{    "colors": [      {        "name": "Brand blue",        "hex": "#085CC2"      },      {        "name": "Ink",        "hex": "#0b1120"      }    ]  }'
Empty

Get the team's brand kit GET

Your team's colours, logos and uploaded fonts. Read this before authoring a template that should be on-brand: the hex values here are the ones to put in a component's `fill`, `fonts[].family` is the exact string to put in `fontFamily`, and `images[].key` is what goes in an image component's `src` — or in a Typst `#image("...")`, since the file is staged at that path. A font carries `problem` only when it cannot be used — no readable family name, or a family the product already ships, where the built-in face wins the name and the uploaded file is never drawn. Fonts uploaded before that was refused are still stored; this is where they say so. Use `images[].key`, not `images[].url`. The key is resolved against storage at render time, so a template that names it keeps working and picks up a replaced logo. A URL written into a document is a copy of a decision made once. A team can keep more than one kit. `fonts` and `images` cover all of them, because that is the scope a render resolves them in — a family or a key from any kit works in any template — and each entry carries `kit_id`/`kit_name`. `kits[]` lists the kits with their own palettes; the top-level `id`, `name` and `colors` are the default kit's, and an upload with no kit named goes there.

Upload a logo or image POST

Upload a logo or a shared image. `multipart/form-data` with a `file` part, or JSON with `filename` and `content_base64`. Optional `type`: `logo` (the default) or `image`. Brand kit images are team-level, so one upload serves every template. That is the difference from `POST /api/v1/templates/{id}/assets`, which attaches an image to a single template — use that for artwork belonging to one design, and this for the mark that appears on all of them. The response carries `key`, which is what belongs in a canvas image component's `src`. Prefer it over `url`: the key is resolved at render time, so the reference cannot rot, and re-uploading the same filename replaces the file while keeping the key, so every template pointing at it picks up the new artwork. png, jpg, webp, gif and svg, up to 10MB.