---
title: "Create topic"
method: POST
path: "/preference-center/api/v1/topics"
tags: ["Topics"]
---

# Create topic

`POST /preference-center/api/v1/topics`

Creates a new preference center topic. For **SMART campaigns**, set `hideFromUi: true` so the topic is used for campaign logic but not shown in the customer-facing preference center. Name must be unique within the brand group. `brandGroupId` must reference an existing brand group.

## Request body

- TopicCreateRequest
  - `name` string, required — Display name of the topic (must be unique within brand group)
  - `description` string, required — Description of the topic
  - `brandGroupId` string, uuid, required — Brand group this topic belongs to (must exist)
  - `hideFromUi` boolean, nullable — Set to true for SMART campaign topics so they are hidden from the preference center UI

## Response `201`

Topic created successfully.

- Topic — A preference center topic. For SMART campaigns, hideFromUi is true so the topic is not shown in the preference center UI.
  - `id` string, uuid — Unique identifier of the topic (set by server on create)
  - `name` string — Display name of the topic
  - `description` string — Description of the topic
  - `parentId` string, uuid, nullable — Parent topic ID for hierarchical topics
  - `order` integer — Display order in the preference center
  - `brandGroupId` string, uuid — Brand group this topic belongs to
  - `createdAt` string, date-time, nullable — Set by server
  - `createdBy` string, nullable — Set by server from auth context
  - `updatedAt` string, date-time, nullable — Set by server
  - `updatedBy` string, nullable — Set by server from auth context
  - `hideFromUi` boolean, nullable — When true, topic is hidden from the preference center UI (e.g. SMART campaign topics). Cannot be changed after creation.

## Other responses

- `400` — Invalid request body or parameters.
- `401` — Authentication required or invalid
- `409` — Conflict - topic with the same name already exists in this brand group
- `500` — Internal server error

---

[API](https://skmtc.net/optimove/apis/optimove-api.md) · [All operations](https://skmtc.net/optimove/apis/optimove-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/optimove/optimove-api/revisions/fc55c5b1bec5/schema)
