---
title: "Create conversation"
method: POST
path: "/chat/v1/conversations"
tags: ["Chat:v1:Conversations"]
---

# Create conversation

`POST /chat/v1/conversations`

Creates a team chat or channel as the authenticated user. Members are assigned via userIds (individual users) and/or smartGroupIds (dynamic cohorts) - at least one assignment is required. Use type: "team" for a collaborative chat where members can send messages, or type: "channel" for a broadcast group where only admins post. A custom publisher can subsequently post into the created group via POST /chat/v1/conversations/{conversationId}/message.

## Request body

- ConversationMutationRequest
  - `title` string, required — The conversation title shown in the chat clients. Must be non-empty after trimming whitespace.
  - `type` 'team' | 'channel', required — An enumeration.
  - `assignedUserIds` integer[] — Individual user IDs assigned as members. At least one of assignedUserIds or assignedSmartGroupIds must be provided. Defaults to an empty array.
  - `assignedSmartGroupIds` integer[] — Smart group (dynamic cohort) IDs assigned to the conversation. Membership follows the smart group's rules. At least one of assignedUserIds or assignedSmartGroupIds must be provided. Defaults to an empty array.
  - `adminUserIds` integer[] — User IDs granted admin privileges in the conversation (manage members/settings; for channels, the only users who can post). An admin id must also be an assigned member (via assignedUserIds or an assigned smart group) to take effect. If omitted, defaults are applied.
  - `isLocked` boolean — Whether the conversation is created locked (members cannot send messages until an admin unlocks it). Defaults to unlocked.
  - `isMembersHidden` boolean — Whether the member list is hidden from members in the chat clients. Defaults to false.
  - `description` object[] — Ordered list of structured rich-text blocks shown in the conversation details (not a chat message). Each block is a typed object, e.g. {"type":"html","html":"<div>...</div>"}. Defaults to an empty array.

## Response `200`

Successful Response

- APIResponseConversationMutationResponse
  - `requestId` string
  - `data` ConversationMutationResponse, required
    - `conversation` ConversationDetailsResponse, required
      - `id` string, required — The unique identifier of the conversation. Use for sending messages and follow-up calls.
      - `title` string, required — The conversation title
      - `type` 'team' | 'channel', required — An enumeration.
      - `assignedUserIds` integer[], required — Individual user IDs assigned to the conversation
      - `assignedSmartGroupIds` integer[], required — Smart group IDs assigned to the conversation
      - `adminUserIds` integer[], required — User IDs with admin privileges in the conversation
      - `isLocked` boolean — Whether the conversation is locked
      - `isMembersHidden` boolean — Whether the member list is hidden
      - `description` object[] — Structured conversation description blocks

## Other responses

- `404` — Conversation could not be resolved after creation
- `422` — Validation Error

---

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