Skip to content

Create Work Channel

POST
/work/channels

Create one Work channel.

409 when the name is taken — a channel’s slug IS its room address, so two channels cannot share one. 422 for a name or description that cannot be normalized, and for an unknown templateId. templateId seats the template’s specialists and seeds its Canvas.

The creator comes from the authenticated principal. The body cannot express it: author, actor_id, org_id and createdBy are refused outright rather than ignored.

Authorizations

Parameters

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

One channel a person is creating.

Carries what the channel IS and who is seated in it — never who is creating it. The creator, the organization and the signing identity all come from the authenticated session in work/router.py, and Idempotency-Key comes from the header. SERVER_OWNED_MESSAGE_FIELDS is reused verbatim for the refusal because the danger is identical: create_work_event turns whatever actor_id/org_id it is handed into the signing key AND the g8_actor / g8_org tags.

object
description
Any of:
string
<= 1000 characters
displayName
Any of:
string
<= 255 characters
kind
string
default: stream
Allowed values: stream forum
memberUserIds
Array<string>
<= 200 items
name
required
string
>= 1 characters <= 255 characters
participantAgentIds
Array<string>
<= 16 items
templateId
Any of:
string
ttlSeconds
Any of:
integer
> 0 <= 2147483647
visibility
string
default: open
Allowed values: open private

Responses

201

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
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer

422

Validation Error

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