---
title: "Create workspace brand"
method: POST
path: "/api/workspace/{workspace_id}/brands"
---

# Create workspace brand

`POST /api/workspace/{workspace_id}/brands`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/workspace/{workspace_id}/brands`
- Auth: HTTP bearer

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Adds a brand you already have to a workspace, from its kit and, optionally, its design system. The brand is `ready` right away. To have Base44 build a brand from a description instead, use [Generate workspace brand](/api-reference/generate-workspace-brand).

`kit.title` becomes the brand's title, and it can't exactly match another brand's title in the workspace. `kit` and `design_system` are stored as you send them, up to 1 MB together. If the workspace has no default brand, this brand becomes the default.

Retrying a create that succeeded returns a `409`, because the title is then taken, or the plan-limit `403` when the new brand filled the workspace's limit.

Brands need the Builder plan or higher. An Enterprise workspace can have any number of brands, and any other workspace on Builder or a higher plan can have 1. A brand whose `status` is `failed` doesn't count. Over the limit this returns a `403` whose `detail.reason` is `design_system_limit_reached` and whose `detail.limit` is the workspace's limit.

This is limited to 60 requests per minute, shared with the other endpoints that change brands, except generating one. A signed-in session has its own limit, and every personal access token for the workspace shares one. Some workspaces have a different limit.

<Note>Call this as an owner or admin of the workspace, with a personal access token for that workspace sent as a Bearer token, or from a signed-in session. A read-only token is refused, and workspace API keys aren't accepted.</Note>

## Path parameters

- `workspace_id` string, required: ID of the workspace. With a personal access token, use the token's workspace. Get it from `organization_id` in [Get app](/api-reference/get-app).

## Request body

- BrandUpsertRequest
  - `kit` object, required: The brand's identity. It needs a non-empty `title`, which becomes the brand's title, and a `description`. Brands Base44 generates also carry `tagLine`, `values`, `toneOfVoice`, `designGuidelines`, `componentStyle`, and a `logo` with its `url`. Nothing else in it is checked.
  - `design_system` object: The brand's design system: its `tokens`, such as `colors` and `fonts`, and its component sections. It's stored as you send it. When you include `tokens`, send it as an object. Defaults to an empty object.

## Response `200`

The new brand.

- WorkspaceBrandStarted
  - `status` 'success', required: Always `success`.
  - `message` string, required: Short confirmation. Its wording can change, so don't parse it.
  - `id` string, required: ID of the new brand.

## Other responses

- `400`: `kit` has no `title` or no `description`, or `kit` and `design_system` together are larger than 1 MB.
- `401`: Missing or invalid credentials.
- `403`: You aren't an owner or admin of the workspace, your token is for a different workspace or is read-only, your credential can't be used on this endpoint, or the workspace is at its brand limit.
- `409`: Another brand in the workspace already has this title, or your workspace requires an unlocked SSO session.
- `422`: Validation Error
- `429`: Rate limit exceeded.

## Changes

> 58 revisions in range; 1 not diffed.

- **2026-10-12** `5e139db2e643`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API
- **2026-10-09** `fc604cdcc3a2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/workspace/:workspace_id/brands/post.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/fa29e915c226?raw)
