Create a topic

POST
/v1/topics

A topic is what contacts subscribe to, built on categories: emails sent with category equal to the topic's key are about it, so contacts who opted out (or, for an opt_out topic, never opted in) are skipped. Public topics show in the preference center.

Authorization

bearerAuth
headerAuthorizationBearer <token>

A secret API key from the dashboard: coss_live_… for production environments, coss_test_… for sandbox environments.

Header Parameters

Coss-Version?"2026-10-10"

The API version (a date) to use for this request. Defaults to your organization's version, pinned to the latest one when it first used the API and upgraded from the dashboard. The SDK always sends the version it was built for.

Value in"2026-10-10"

Request Body

application/json
  1. body
key*string
Match^[A-Za-z0-9_-]{1,256}$
name*string
Length1 <= length <= 200
description?|
Lengthlength <= 500
default_subscription*string

opt_in: every subscribed contact gets the topic's emails unless they opt out. opt_out: only contacts who opted in do.

Value in"opt_in""opt_out"
visibility?string

private topics never show in the preference center (default public).

Value in"public""private"
position?integer

Order in the preference center (ascending).

Range0 <= value <= 1000

Response Body

The new topic.

application/json
  1. response
object*"topic"
Value in"topic"
id*string
key*string

The category of the emails about this topic. Can't change.

name*string
description*string|null
default_subscription*string
Value in"opt_in""opt_out"
visibility*string
Value in"public""private"
position*integer
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
import { Coss } from "coss";const coss = new Coss({  apiKey: process.env.COSS_API_KEY,  baseUrl: "https://api.coss.com",});const { data, error } = await coss.email.topics.create({  key: "newsletter",  name: "Newsletter",  default_subscription: "opt_in",});
{  "object": "topic",  "id": "topic_01k7c8m4q2f3e9v6t5r1n0p8yz",  "key": "newsletter",  "name": "Newsletter",  "description": "Monthly product news.",  "default_subscription": "opt_in",  "visibility": "public",  "position": 0,  "created_at": "2026-10-10T12:00:00.000Z",  "updated_at": "2026-10-10T12:00:00.000Z"}