Skip to content

Update Work Channel

PATCH
/work/channels/{channel_id}

Change one channel’s display name, description, visibility, seating, agent policy or archive state.

Field PRESENCE is the contract — an omitted field keeps its stored value, and description: null clears it.

name is not accepted and a rename never moves the room: the slug is the channel’s address, and changing it would strand every event already filed under the old one. 403 when the caller neither owns the channel nor holds owner/admin rights, and separately when a non-admin tries to change agent activation — an organization-level spend decision rather than a room-owner one. 409 for a built-in channel’s identity or visibility.

Authorizations

Parameters

Path Parameters

channel_id
required

Channel id or slug

string

Channel id or slug

Header Parameters

Idempotency-Key
Any of:
string

Retry-safety key. Replaying one returns the ORIGINAL result with duplicate: true instead of writing twice. Omit it and the server mints a single-use key, which means a retried request writes again — send your own for anything you may retry.

X-Target-Org-Id
Any of:
string

Request Body required

The fields of one channel a person is changing.

Field PRESENCE is the contract, not field value. An omitted field keeps whatever the channel already has; a field present with null clears it where clearing is meaningful (description) and is refused where it is not. That is the port of the gateway’s Object.hasOwn(input, …) checks, and it is why provided_fields — not the values — is what the router hands the service.

object
agentResponsePolicy
Any of:
string
Allowed values: mention_required proactive
archived
Any of:
boolean
confirmAgentAccess
boolean
description
Any of:
string
<= 1000 characters
displayName
Any of:
string
<= 255 characters
icon
Any of:

A channel’s icon: a glyph on a color, an emoji, or an uploaded image.

glyph and color are ids from the client’s curated sets, never raw CSS or SVG, so nothing a member stores can inject markup or styles into another member’s sidebar. An image is a Work attachment id, never a URL: readability is re-checked on every read (readable_attachment_ids).

object
attachmentId
Any of:
string
/^[A-Za-z0-9-]{1,64}$/
color
Any of:
string
/^[a-z0-9-]{1,32}$/
emoji
Any of:
string
>= 1 characters <= 16 characters
glyph
Any of:
string
/^[a-z0-9-]{1,40}$/
type
required
string
Allowed values: glyph emoji image
memberUserIds
Array<string>
<= 100 items
participantAgentIds
Array<string>
<= 32 items
visibility
Any of:
string
Allowed values: open private

Responses

200

Successful Response

object
data
required

The result of one channel write, with its idempotent-replay marker.

object
canvasSeeded
Any of:
boolean
channel
Any of:

One Work channel as the room stores it.

object
archivedAt
Any of:
string
createdAt
Any of:
string
createdBy
Any of:
string
description
Any of:
string
displayName
Any of:
string
id
Any of:
string
kind
Any of:
string
memberUserIds
Any of:
Array<string>
name
Any of:
string
participantAgentIds
Any of:
Array<string>
system
Any of:
boolean
visibility
Any of:
string
key
additional properties
any
duplicate
Any of:
boolean
key
additional properties
any
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
notes
Any of:
Array<string>
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer
total_available
Any of:
integer
total_is_lower_bound
Any of:
boolean

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string