# Retrieve the workspace brand kit

Source: https://kirora.io/docs/api/reference/getBrandKit

`GET /v1/brand-kit`

Requires an API key with the `templates:read` scope. [About keys and scopes](https://kirora.io/docs/api/reference/authentication)

Works with integration, agent and partner keys. Also available to embed sessions.

Returns the workspace brand kit. Until it is saved, it holds the defaults: an empty `theme`, no `name`, logo, links, header or footer, and `updatedAt` null. Every email's `theme` holds only the fields it overrides; the rest come from here. A `header` block without an image shows the brand kit's logo, and a `social` block without links shows its social links. A change restyles templates and draft campaigns and journeys at once. Scheduling or sending a campaign, activating a journey and publishing a template freeze the brand kit that email goes out with, so nothing already approved changes. The default header and footer are what gallery and Kiro designs open and close with; emails that place them follow the shared blocks' own changes.

## Header parameters

- `Kirora-Workspace` (string, optional, pattern `^[A-Za-z0-9._:-]{1,128}$`) — Partner keys only: the child workspace to act in, by the external id the partner gave it. Without it, a partner key acts in its own workspace. Any other key that sends it is refused with 403, and an unknown workspace is 404.

## Returns

Returns `200 OK` with a `BrandKit` in `data`. Otherwise returns an error; [Errors](https://kirora.io/docs/api/reference/errors) lists every code and which to retry.

- `name` (string | null, required, 1–120 characters) — The sender's name on the unsubscribe and opt-in pages, and the logo's alt text. Null is the workspace name.
- `theme` (EmailTheme, required) — The workspace's email look. Every email's `theme` holds only the fields it overrides; the rest come from here.
  - `bodyFontFamily` (string, optional, pattern `^[\w\s,'"-]+$`, up to 200 characters) — Body font stack, such as `Inter, sans-serif`.
  - `headingFontFamily` (string, optional, pattern `^[\w\s,'"-]+$`, up to 200 characters) — Heading font stack.
  - `cardBackgroundColor` (string, optional, pattern `^#(?:[0-9a-f]{3}|[0-9a-f]{6})$`) — Background of the email card, as hex.
  - `canvasBackgroundColor` (string, optional, pattern `^#(?:[0-9a-f]{3}|[0-9a-f]{6})$`) — Background behind the card, as hex.
  - `textColor` (string, optional, pattern `^#(?:[0-9a-f]{3}|[0-9a-f]{6})$`) — Default text colour, as hex.
  - `accentColor` (string, optional, pattern `^#(?:[0-9a-f]{3}|[0-9a-f]{6})$`) — Brand colour for buttons and highlights, as hex.
  - `linkColor` (string, optional, pattern `^#(?:[0-9a-f]{3}|[0-9a-f]{6})$`) — Link colour, as hex.
  - `headingColor` (string, optional, pattern `^#(?:[0-9a-f]{3}|[0-9a-f]{6})$`) — Heading colour, as hex; unset, headings take `textColor`.
  - `buttonTextColor` (string, optional, pattern `^#(?:[0-9a-f]{3}|[0-9a-f]{6})$`) — Label colour of solid buttons in `accentColor`, as hex; unset, white or near-black, whichever reads on it.
  - `baseFontSize` (string, optional, one of `14px`, `15px`, `16px`, `17px`, `18px`) — Body text size; headings and buttons scale with it. Unset is `16px`.
  - `cardWidth` (string, optional, one of `560px`, `600px`, `680px`) — Width of the email card on wide screens.
  - `cardBorderRadius` (string, optional, one of `0px`, `6px`, `12px`, `16px`, `24px`, `999px`) — Corner rounding of the email's card.
  - `buttonBorderRadius` (string, optional, one of `0px`, `6px`, `12px`, `16px`, `24px`, `999px`) — Button corners; `cardBorderRadius` rounds the email's card and, when this is unset, buttons.
  - `buttonStyle` (string, optional, one of `solid`, `outline`) — Button style.
- `socialLinks` (object[], required, at most 10 items) — The profiles a `social` block without links of its own shows.
  - `label` (string, required, 1–80 characters)
  - `href` (string, required, uri, pattern `^[^\s{}]*$`, up to 2,048 characters)
- `defaultHeaderId` (string | null, required, uuid) — The shared block gallery and Kiro designs open with, in place of their logo.
- `defaultFooterId` (string | null, required, uuid) — The shared block gallery and Kiro designs close with, in place of their footer. It must hold a `footer` block.
- `logo` (object | null, required) — What a `header` block without an image of its own shows.
  - `assetId` (string, required, uuid)
  - `url` (string, required) — The image's address in the workspace library.
  - `alt` (string | null, required) — Null is `name`.
  - `width` (string | null, required, pattern `^(?:[89]\d|1\d\d|2[0-3]\d|240)px$`)
- `updatedAt` (string | null, required, date-time) — Null until the brand kit is saved.

## Example

```bash
curl https://api.kirora.io/v1/brand-kit \
  -H "Authorization: Bearer $KIRORA_API_KEY"
```

Response `200`:

```json
{
  "data": {
    "name": "Acme Shop",
    "theme": {
      "bodyFontFamily": "Arial, sans-serif",
      "headingFontFamily": "Georgia, serif",
      "cardBackgroundColor": "#ffffff",
      "canvasBackgroundColor": "#f4f1ec",
      "textColor": "#1f2933",
      "accentColor": "#b4461f",
      "linkColor": "#b4461f",
      "cardWidth": "600px",
      "cardBorderRadius": "6px",
      "buttonStyle": "solid",
      "headingColor": "#1f2933",
      "baseFontSize": "16px"
    },
    "logo": {
      "assetId": "0192f3d2-4d5e-7f60-9b72-8d9e0f1a2b3c",
      "url": "https://assets.kirora.io/images/0192f3d2-4d5e-7f60-9b72-8d9e0f1a2b3c.png",
      "alt": null,
      "width": "140px"
    },
    "socialLinks": [
      {
        "label": "Instagram",
        "href": "https://instagram.com/acmeshop"
      },
      {
        "label": "LinkedIn",
        "href": "https://www.linkedin.com/company/acmeshop"
      }
    ],
    "defaultHeaderId": null,
    "defaultFooterId": null,
    "updatedAt": "2026-10-01T09:30:00.000Z"
  }
}
```
