---
title: "Create a brand kit"
method: POST
path: "/v1/brand-kits"
tags: ["Brand kits"]
---

# Create a brand kit

`POST /v1/brand-kits`

## Request

- Base URL: `https://api.vivideo.ai`
- URL: `https://api.vivideo.ai/v1/brand-kits`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/vivideo/apis/vivideo-api/docs/v1/brand-kits/post.ts> (a function with typed inputs; its response is checked against the schema)

Free accounts may create one brand kit; more requires premium. Apply a kit to auto-mode videos via `brand_kit_id`.

## Request body

- object
  - `name` string, required
  - `logo_asset_id` string
  - `logo_url` string
  - `primary_color` string
  - `secondary_color` string
  - `tertiary_color` string
  - `accent_color` string
  - `title_font` string
  - `body_font` string
  - `motion_style` 'elevated' | 'friendly' | 'minimal' | 'professional' | 'playful'
  - `brand_identity` string

## Response `201`

Brand kit created.

- BrandKit
  - `object` string
  - `brand_ref` string: Use as brand_kit_id when creating auto videos.
  - `name` string
  - `logo_url` string
  - `logo_asset_id` string
  - `primary_color` string
  - `secondary_color` string
  - `tertiary_color` string
  - `accent_color` string
  - `title_font` string
  - `body_font` string
  - `motion_style` string
  - `brand_identity` string

## Other responses

- `400`: Invalid parameters (`invalid_request`, `unknown_model`, `invalid_url`).
- `401`: Missing, malformed or revoked API key (`missing_api_key`, `invalid_api_key`, `api_key_revoked`).
- `403`: Premium plan required or the free allowance is used (`upgrade_required`, `free_limit_reached`); `links.upgrade` = https://app.vivideo.ai/upgrade.
- `429`: Rate limit hit (`rate_limited`). Honor the `Retry-After` header / `retry_after_seconds` field.

---

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