---
title: "Create Chat Theme"
method: POST
path: "/api/v1/chat-themes"
tags: ["chat-themes"]
---

# Create Chat Theme

`POST /api/v1/chat-themes`

## Request

- Base URL: `https://api.gnosari.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.gnosari.com/api/v1/chat-themes`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-AUTH-TOKEN`

Create a new chat theme.

If no identifier is provided, one will be generated from the name.

The ``configuration`` blob is normalized + validated on write (the single
funnel shared with MCP). It must be a canonical v2 document
(``{version, branding, defaults}``); a legacy-shaped blob (top-level
``ui``/``appearance``/``content``/``features``, or missing ``branding``) or an
invalid token (bad hex, non-allowlisted font, bad enum) yields a **400**
(RFC 9457) whose detail names the exact offending key. An omitted/empty
configuration defaults to the canonical v2 bundle.

## Request body

- ChatThemeCreate: Schema for creating a new chat theme.
  - `name` string, required: Theme name
  - `description` string, nullable: Theme description
  - `identifier` string, nullable: URL-safe unique identifier
  - `configuration` object: Canonical v2 chat-theme configuration (camelCase blob): {version: 2, branding: {...}, defaults: {...}}. Legacy pre-v2 shapes (top-level ui/content/features/appearance keys) are rejected with a 400.
  - `is_default` boolean: Whether this is the account's default theme

## Response `201`

Successful Response

- ChatTheme: Response schema for chat theme with all fields.
  - `name` string, required: Theme name
  - `description` string, nullable: Theme description
  - `identifier` string, nullable: URL-safe unique identifier
  - `configuration` object: Canonical v2 chat-theme configuration (camelCase blob): {version: 2, branding: {...}, defaults: {...}}. Legacy pre-v2 shapes (top-level ui/content/features/appearance keys) are rejected with a 400.
  - `is_default` boolean: Whether this is the account's default theme
  - `id` integer, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, nullable

## Other responses

- `422`: Validation Error

---

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