---
title: "Create Preference Section"
method: POST
path: "/preferences/sections"
tags: ["Preference Sections"]
---

# Create Preference Section

`POST /preferences/sections`

Create a preference section in your workspace. The section id is generated and returned. Topics are created inside a section via POST /preferences/sections/{section_id}/topics.

## Request body

- PreferenceSectionCreateRequest — Request body for creating a preference section.
  - `name` string, required — Human-readable name for the section.
  - `routing_options` ChannelClassification[], nullable — Default channels for the section. Defaults to empty if omitted.
  - `has_custom_routing` boolean, nullable — Whether the section defines custom routing for its topics.

## Response `201`

Created

- PreferenceSectionGetResponse — A preference section in your workspace, including its topics.
  - `id` string, required — The preference section id.
  - `name` string, required — Human-readable name.
  - `routing_options` ChannelClassification[], required — Default channels for the section. May be empty.
  - `has_custom_routing` boolean, required — Whether the section defines custom routing for its topics.
  - `created` string, required — ISO-8601 timestamp of when the section was created.
  - `creator` string, nullable — Id of the creator.
  - `updated` string, nullable — ISO-8601 timestamp of the last update.
  - `updater` string, nullable — Id of the last updater.
  - `topics` PreferenceTopicGetResponse[], required — The topics contained in this section.
    - `id` string, required — The preference topic id.
    - `name` string, required — Human-readable name.
    - `default_status` 'OPTED_OUT' | 'OPTED_IN' | 'REQUIRED', required
    - `routing_options` ChannelClassification[], required — Default channels delivered for this topic. May be empty.
    - `allowed_preferences` AllowedPreference[], required — Preference controls a recipient may customize. May be empty.
    - `include_unsubscribe_header` boolean, required — Whether a list-unsubscribe header is included on emails for this topic.
    - `topic_data` object, required — Arbitrary metadata associated with the topic.
    - `created` string, required — ISO-8601 timestamp of when the topic was created.
    - `creator` string, nullable — Id of the creator.
    - `updated` string, required — ISO-8601 timestamp of the last update.
    - `updater` string, nullable — Id of the last updater.

## Other responses

- `400` — Bad Request

## Changes

- **2026-06-24** `124a60dd716b` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/trycourier/apis/courier/changes/preferences/sections/post.md)

---

[API](https://skmtc.dev/trycourier/apis/courier.md) · [All operations](https://skmtc.dev/trycourier/apis/courier/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/trycourier/courier/revisions/124a60dd716b/schema)
