brand-kits

Update Brand Kit

Changed on

Update a brand kit: palette, fonts, voice fields, title, default theme, team default.

colors / fonts are replace-all writes (send the full desired list). is_default: true promotes this kit to the team default (clearing whichever kit held it) in the same transaction as the field writes, so a correct-and-promote never lands half-applied; is_default: false is a 400 — promote the replacement kit instead of leaving the team with no default. Returns 404 not_found if the brand kit does not exist, has been deleted, or the caller lacks team access — collapsed like the sibling endpoints so the update path does not leak existence of brand kits in other teams. Invalid field values (a color entry without color, a font without family) are a 400.

patch/brand-kits/{brand_kit_id}

Request

  • Base URL
    https://api.moda.app/v1
  • URL
    https://api.moda.app/v1/brand-kits/{brand_kit_id}
  • Auth
    HTTP bearer

Path parameters

brand_kit_idstring required

Prefixed bk_ wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, a bare UUID string is also accepted in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working), as is the prefix over a UUID body (bk_00000000-0000-4000-8000-000000000000). All three are permanent, supported inputs; only the canonical form is ever emitted.

Example:bk_01HT9WK8N3M2J4A5Z6P7Q8R9TV

Headers

Moda-Version'2026-04-12' | '2026-05-01'
Example:2026-05-01

Calendar-dated API version pin. New integrations should pin 2026-05-01 to opt into the newest response shapes. For back-compat the server also accepts requests with no header and resolves them to the current default (today: 2026-04-12); that default advances on each sunset date. Any unsupported value returns 400 unsupported_version.

Request body

titlestring nullable

New display name for the brand kit.

colorsobject[] nullable

Array of {color, label?, mode?, gradient?} objects. Replaces all existing colors — send the full desired palette (read it first), including any mode/gradient values to keep.

fontsobject[] nullable

Array of {family, label?, weight?} objects. Replaces all existing fonts. Each font's supported flag is derived server-side from the platform + team font catalogs; a caller-supplied value is ignored.

company_namestring nullable

Company name.

company_descriptionstring nullable

Brief company description.

taglinestring nullable

Company tagline or slogan.

brand_valuesstring[] nullable

List of brand values (e.g. 'innovative', 'trustworthy').

brand_aestheticstring[] nullable

Deprecated list of aesthetic descriptors (e.g. 'minimal', 'bold'). The free-text aesthetic is derived during brand-kit population and is not settable via this API.

brand_tone_of_voicestring[] nullable

List of tone-of-voice descriptors (e.g. 'professional', 'friendly').

default_theme_canvas_idstring nullable

Prefixed cvs_ wire ID (Crockford base32 body) — the canonical, recommended form. For back-compat, a bare UUID string is also accepted in both path parameters and JSON request bodies (older integrations that stored raw UUIDs keep working), as is the prefix over a UUID body (cvs_00000000-0000-4000-8000-000000000000). All three are permanent, supported inputs; only the canonical form is ever emitted.

is_defaultboolean nullable

Send true to make this the team's default brand kit, clearing whichever kit held it. Applied in the same transaction as the field writes above. Omit to leave the flag unchanged. false is rejected (400): demoting without naming a replacement leaves the team with no default — promote the replacement kit instead.

Example request

{
  "default_theme_canvas_id": "cvs_01HT9WK8N3M2J4A5Z6P7Q8R9TV"
}

Response

Successful Response

object required

Changes

    • warning

      the / request property's maxLength was set to 255

    • info

      added the new optional request property

    • info

      added the non-success response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status