Update channel settings or archive status

PATCH/v1/channels/{channelId}

Project conversations cannot be archived or transferred independently of their project (400). Requires an active organization membership and threads:write scope. Requires channel_manage. Compare-and-swap revision prevents overwrites (409). Audience participation cannot be revoked. Archiving preserves history and prevents posting; set archived=false to restore. Send ownerId with revision and no other edits to offer ownership to another active organization member. Only the current owner may offer ownership of an active channel. The response retains the current owner until the recipient accepts through the shared resource-invitations API.

How to call this endpoint

Every ACP API request uses bearer authentication. The examples here show the actual request path, auth header, and body shape that the platform expects.

Path, query, and header parameters

These parameters control which ACP object the endpoint acts on and how the request is processed.

Path parameters
NameLocationTypeRequiredDescription
channelIdpathstringYes
Query parameters
None.

Body schema

Content type: application/json · Required

FieldTypeRequiredDescription
ownerIdstringNoOffer ownership to this active organization member. Send only ownerId and revision; acceptance is required.
revisionintegerYes
namestringNoHuman-readable name.
descriptionstringNoHuman-readable description.
archivedbooleanNo
defaultEnvironmentIdstringNoDefault environment for new agent mentions. Null uses the organization default; omission on update preserves the selection.
metadataobjectNoFree-form metadata object.

What the API returns

Each response code below includes the documented payload shape for the ACP API.

200Channel operation resultapplication/json
FieldTypeRequiredDescription
channelobjectYes
channel.projectIdstringNoProject whose live access policy governs this conversation. Null for organization channels.
channel.idstringYesUnique identifier.
channel.threadIdstringYesCanonical thread ID. Use /threads/{threadId}/timeline and /threads/{threadId}/events for history and realtime.
channel.organizationIdstringYes
channel.ownerIdstringYes
channel.creatorIdstringNo
channel.creatorobjectNo
channel.creator.idstringYesUnique identifier.
channel.creator.userIdstringYesUser ID.
channel.creator.namestringYesHuman-readable name.
channel.creator.emailstringYes
channel.creator.avatarUrlstringYes
channel.ownerobjectNo
channel.owner.idstringYesUnique identifier.
channel.owner.userIdstringYesUser ID.
channel.owner.namestringYesHuman-readable name.
channel.owner.emailstringYes
channel.owner.avatarUrlstringYes
channel.canTransferOwnershipbooleanNo
channel.namestringYesHuman-readable name.
channel.descriptionstringYesHuman-readable description.
channel.archivedbooleanYes
channel.defaultEnvironmentIdstringNoDefault environment for new agent mentions. Null uses the organization default; omission on update preserves the selection.
channel.metadataobjectYesFree-form metadata object.
channel.revisionintegerYes
channel.createdAtstringYesISO 8601 timestamp.
channel.updatedAtstringYesISO 8601 timestamp.
channel.lastActivityAtstringYes
channel.lastMessagestringYes
channel.lastSequenceintegerYes
channel.readSequenceintegerYes
channel.unreadbooleanYes
channel.canManagebooleanNo
400Invalid input (400), unauthenticated (401), denied (403), unavailable resource (404), stale revision/idempotency conflict/archived channel (409), unavailable PostgreSQL backend (503), or failed operation (500).application/json
FieldTypeRequiredDescription
errorstringYes
codestringNo
messagestringYesMessage text.
401Invalid input (400), unauthenticated (401), denied (403), unavailable resource (404), stale revision/idempotency conflict/archived channel (409), unavailable PostgreSQL backend (503), or failed operation (500).application/json
FieldTypeRequiredDescription
errorstringYes
codestringNo
messagestringYesMessage text.
403Invalid input (400), unauthenticated (401), denied (403), unavailable resource (404), stale revision/idempotency conflict/archived channel (409), unavailable PostgreSQL backend (503), or failed operation (500).application/json
FieldTypeRequiredDescription
errorstringYes
codestringNo
messagestringYesMessage text.
404Invalid input (400), unauthenticated (401), denied (403), unavailable resource (404), stale revision/idempotency conflict/archived channel (409), unavailable PostgreSQL backend (503), or failed operation (500).application/json
FieldTypeRequiredDescription
errorstringYes
codestringNo
messagestringYesMessage text.
409Invalid input (400), unauthenticated (401), denied (403), unavailable resource (404), stale revision/idempotency conflict/archived channel (409), unavailable PostgreSQL backend (503), or failed operation (500).application/json
FieldTypeRequiredDescription
errorstringYes
codestringNo
messagestringYesMessage text.
500Invalid input (400), unauthenticated (401), denied (403), unavailable resource (404), stale revision/idempotency conflict/archived channel (409), unavailable PostgreSQL backend (503), or failed operation (500).application/json
FieldTypeRequiredDescription
errorstringYes
codestringNo
messagestringYesMessage text.
503Invalid input (400), unauthenticated (401), denied (403), unavailable resource (404), stale revision/idempotency conflict/archived channel (409), unavailable PostgreSQL backend (503), or failed operation (500).application/json
FieldTypeRequiredDescription
errorstringYes
codestringNo
messagestringYesMessage text.
Update channel settings or archive status
Loading...
Response 200
Loading...
See the ACP quickstart and SDK flow