Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Communicate So Workspace members API
version: 0.1.5
description: 'Operations tagged Workspace members across 2 of this provider''s published API definitions: communicate-so-openapi.json, communicate-so-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://app.communicate.so/api/v1
description: Canonical external base URL served through the Next.js /api/v1 rewrite.
security:
- oauth2: []
- bearerAuth: []
tags:
- name: Workspace members
paths:
/workspaces/{workspaceId}/members:
get:
operationId: listWorkspaceMembers
summary: List workspace members and identities
description: Use an explicitly scoped user-bound account bearer credential or an application session. Scope grants are intersected with live membership, role, tenant isolation, agent access and plan limits; a credential does not grant an owner role. Invitation acceptance requires the verified recipient email.
tags:
- Workspace members
security:
- accountBearer: []
- accountSession: []
- localAccountSession: []
x-required-account-scopes:
- members:read
parameters:
- name: workspaceId
in: path
required: true
schema:
type: string
minLength: 1
responses:
'200':
description: List workspace members and identities
content:
application/json:
schema:
$ref: '#/components/schemas/listWorkspaceMembersResponse'
'401':
description: Missing, invalid, expired or revoked account credential or application session.
'403':
description: Required account scope, live verified identity, membership or role permission is missing.
'404':
description: Workspace or addressed resource is not visible to this member.
'500':
description: Unexpected server failure.
'503':
description: Authorization service temporarily unavailable.
post:
operationId: addWorkspaceMember
summary: Add a user to a workspace with any role except owner
description: Use an explicitly scoped user-bound account bearer credential or an application session. Scope grants are intersected with live membership, role, tenant isolation, agent access and plan limits; a credential does not grant an owner role. Invitation acceptance requires the verified recipient email.
tags:
- Workspace members
security:
- accountBearer: []
- accountSession: []
- localAccountSession: []
x-required-account-scopes:
- members:write
parameters:
- name: workspaceId
in: path
required: true
schema:
type: string
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/addWorkspaceMemberRequest'
responses:
'201':
description: Add a user to a workspace with any role except owner
content:
application/json:
schema:
$ref: '#/components/schemas/addWorkspaceMemberResponse'
'400':
description: Invalid request, timezone, resource association or confirmation.
'401':
description: Missing, invalid, expired or revoked account credential or application session.
'402':
description: Plan entitlement or seat capacity does not allow the operation.
'403':
description: Required account scope, live verified identity, membership or role permission is missing.
'404':
description: Workspace or addressed resource is not visible to this member.
'500':
description: Unexpected server failure.
'503':
description: Authorization service temporarily unavailable.
servers:
- url: https://app.communicate.so/api/v1
description: Canonical external base URL served through the Next.js /api/v1 rewrite.
/workspaces/{workspaceId}/members/{memberId}:
patch:
operationId: updateWorkspaceMemberRole
summary: Change a non-owner workspace member role
description: Use an explicitly scoped user-bound account bearer credential or an application session. Scope grants are intersected with live membership, role, tenant isolation, agent access and plan limits; a credential does not grant an owner role. Invitation acceptance requires the verified recipient email.
tags:
- Workspace members
security:
- accountBearer: []
- accountSession: []
- localAccountSession: []
x-required-account-scopes:
- members:write
parameters:
- name: workspaceId
in: path
required: true
schema:
type: string
minLength: 1
- name: memberId
in: path
required: true
schema:
type: string
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/updateWorkspaceMemberRoleRequest'
responses:
'200':
description: Change a non-owner workspace member role
content:
application/json:
schema:
$ref: '#/components/schemas/updateWorkspaceMemberRoleResponse'
'400':
description: Invalid request, timezone, resource association or confirmation.
'401':
description: Missing, invalid, expired or revoked account credential or application session.
'403':
description: Required account scope, live verified identity, membership or role permission is missing.
'404':
description: Workspace or addressed resource is not visible to this member.
'500':
description: Unexpected server failure.
'503':
description: Authorization service temporarily unavailable.
delete:
operationId: removeWorkspaceMember
summary: Remove a non-owner workspace member
description: Use an explicitly scoped user-bound account bearer credential or an application session. Scope grants are intersected with live membership, role, tenant isolation, agent access and plan limits; a credential does not grant an owner role. Invitation acceptance requires the verified recipient email.
tags:
- Workspace members
security:
- accountBearer: []
- accountSession: []
- localAccountSession: []
x-required-account-scopes:
- members:write
parameters:
- name: workspaceId
in: path
required: true
schema:
type: string
minLength: 1
- name: memberId
in: path
required: true
schema:
type: string
minLength: 1
responses:
'200':
description: Remove a non-owner workspace member
content:
application/json:
schema:
$ref: '#/components/schemas/removeWorkspaceMemberResponse'
'401':
description: Missing, invalid, expired or revoked account credential or application session.
'403':
description: Required account scope, live verified identity, membership or role permission is missing.
'404':
description: Workspace or addressed resource is not visible to this member.
'500':
description: Unexpected server failure.
'503':
description: Authorization service temporarily unavailable.
servers:
- url: https://app.communicate.so/api/v1
description: Canonical external base URL served through the Next.js /api/v1 rewrite.
/workspaces/{workspaceId}/members/invites:
get:
operationId: listWorkspaceInvites
summary: List workspace invitations
description: Use an explicitly scoped user-bound account bearer credential or an application session. Scope grants are intersected with live membership, role, tenant isolation, agent access and plan limits; a credential does not grant an owner role. Invitation acceptance requires the verified recipient email.
tags:
- Workspace members
security:
- accountBearer: []
- accountSession: []
- localAccountSession: []
x-required-account-scopes:
- members:read
parameters:
- name: workspaceId
in: path
required: true
schema:
type: string
minLength: 1
responses:
'200':
description: List workspace invitations
content:
application/json:
schema:
$ref: '#/components/schemas/listWorkspaceInvitesResponse'
'401':
description: Missing, invalid, expired or revoked account credential or application session.
'403':
description: Required account scope, live verified identity, membership or role permission is missing.
'404':
description: Workspace or addressed resource is not visible to this member.
'500':
description: Unexpected server failure.
'503':
description: Authorization service temporarily unavailable.
post:
operationId: createWorkspaceInvite
summary: Invite someone to a workspace with any role except owner
description: Use an explicitly scoped user-bound account bearer credential or an application session. Scope grants are intersected with live membership, role, tenant isolation, agent access and plan limits; a credential does not grant an owner role. Invitation acceptance requires the verified recipient email.
tags:
- Workspace members
security:
- accountBearer: []
- accountSession: []
- localAccountSession: []
x-required-account-scopes:
- members:write
parameters:
- name: workspaceId
in: path
required: true
schema:
type: string
minLength: 1
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/createWorkspaceInviteRequest'
responses:
'201':
description: Invite someone to a workspace with any role except owner
content:
application/json:
schema:
$ref: '#/components/schemas/createWorkspaceInviteResponse'
'400':
description: Invalid request, timezone, resource association or confirmation.
'401':
description: Missing, invalid, expired or revoked account credential or application session.
'402':
description: Plan entitlement or seat capacity does not allow the operation.
'403':
description: Required account scope, live verified identity, membership or role permission is missing.
'404':
description: Workspace or addressed resource is not visible to this member.
'409':
description: Duplicate workspace name, conflicting invitation, used invitation, active billing or open checkout prevents this operation.
'500':
description: Unexpected server failure.
'503':
description: Authorization service temporarily unavailable.
servers:
- url: https://app.communicate.so/api/v1
description: Canonical external base URL served through the Next.js /api/v1 rewrite.
/workspaces/{workspaceId}/members/invites/{inviteId}/resend:
post:
operationId: resendWorkspaceInvite
summary: Resend or reactivate an invitation
description: Use an explicitly scoped user-bound account bearer credential or an application session. Scope grants are intersected with live membership, role, tenant isolation, agent access and plan limits; a credential does not grant an owner role. Invitation acceptance requires the verified recipient email.
tags:
- Workspace members
security:
- accountBearer: []
- accountSession: []
- localAccountSession: []
x-required-account-scopes:
- members:write
parameters:
- name: workspaceId
in: path
required: true
schema:
type: string
minLength: 1
- name: inviteId
in: path
required: true
schema:
type: string
minLength: 1
responses:
'200':
description: Resend or reactivate an invitation
content:
application/json:
schema:
$ref: '#/components/schemas/resendWorkspaceInviteResponse'
'401':
description: Missing, invalid, expired or revoked account credential or application session.
'402':
description: Plan entitlement or seat capacity does not allow the operation.
'403':
description: Required account scope, live verified identity, membership or role permission is missing.
'404':
description: Workspace or addressed resource is not visible to this member.
'409':
description: Duplicate workspace name, conflicting invitation, used invitation, active billing or open checkout prevents this operation.
'500':
description: Unexpected server failure.
'503':
description: Authorization service temporarily unavailable.
servers:
- url: https://app.communicate.so/api/v1
description: Canonical external base URL served through the Next.js /api/v1 rewrite.
/workspaces/{workspaceId}/members/invites/{inviteId}:
delete:
operationId: cancelWorkspaceInvite
summary: Remove a workspace invitation
description: Use an explicitly scoped user-bound account bearer credential or an application session. Scope grants are intersected with live membership, role, tenant isolation, agent access and plan limits; a credential does not grant an owner role. Invitation acceptance requires the verified recipient email.
tags:
- Workspace members
security:
- accountBearer: []
- accountSession: []
- localAccountSession: []
x-required-account-scopes:
- members:write
parameters:
- name: workspaceId
in: path
required: true
schema:
type: string
minLength: 1
- name: inviteId
in: path
required: true
schema:
type: string
minLength: 1
responses:
'200':
description: Remove a workspace invitation
content:
application/json:
schema:
$ref: '#/components/schemas/cancelWorkspaceInviteResponse'
'401':
description: Missing, invalid, expired or revoked account credential or application session.
'403':
description: Required account scope, live verified identity, membership or role permission is missing.
'404':
description: Workspace or addressed resource is not visible to this member.
'500':
description: Unexpected server failure.
'503':
description: Authorization service temporarily unavailable.
servers:
- url: https://app.communicate.so/api/v1
description: Canonical external base URL served through the Next.js /api/v1 rewrite.
/invites/{token}/accept:
post:
operationId: acceptWorkspaceInvite
summary: Accept an invitation for the verified account email
description: Use an explicitly scoped user-bound account bearer credential or an application session. Scope grants are intersected with live membership, role, tenant isolation, agent access and plan limits; a credential does not grant an owner role. Invitation acceptance requires the verified recipient email.
tags:
- Workspace members
security:
- accountBearer: []
- accountSession: []
- localAccountSession: []
x-required-account-scopes:
- invites:accept
parameters:
- name: token
in: path
required: true
schema:
type: string
minLength: 1
responses:
'200':
description: Accept an invitation for the verified account email
content:
application/json:
schema:
$ref: '#/components/schemas/acceptWorkspaceInviteResponse'
'401':
description: Missing, invalid, expired or revoked account credential or application session.
'403':
description: Required account scope, live verified identity, membership or role permission is missing.
'404':
description: Workspace or addressed resource is not visible to this member.
'409':
description: Duplicate workspace name, conflicting invitation, used invitation, active billing or open checkout prevents this operation.
'410':
description: Invitation has expired.
'500':
description: Unexpected server failure.
'503':
description: Authorization service temporarily unavailable.
servers:
- url: https://app.communicate.so/api/v1
description: Canonical external base URL served through the Next.js /api/v1 rewrite.
components:
schemas:
acceptWorkspaceInviteResponse:
type: object
properties:
workspaceId:
type: string
minLength: 1
role:
type: string
enum:
- admin
- agent_builder
- support_lead
- member
- analyst
- viewer
status:
type: string
const: accepted
required:
- workspaceId
- role
- status
additionalProperties: false
listWorkspaceMembersResponse:
type: array
items:
type: object
properties:
id:
type: string
minLength: 1
userId:
type: string
minLength: 1
role:
type: string
enum:
- owner
- admin
- agent_builder
- support_lead
- member
- analyst
- viewer
createdAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
name:
anyOf:
- type: string
- type: 'null'
email:
anyOf:
- type: string
- type: 'null'
required:
- id
- userId
- role
- createdAt
- name
- email
additionalProperties: false
updateWorkspaceMemberRoleResponse:
type: object
properties:
id:
type: string
minLength: 1
workspaceId:
type: string
minLength: 1
userId:
type: string
minLength: 1
role:
type: string
enum:
- owner
- admin
- agent_builder
- support_lead
- member
- analyst
- viewer
createdAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
required:
- id
- workspaceId
- userId
- role
- createdAt
additionalProperties: false
addWorkspaceMemberRequest:
type: object
properties:
userId:
type: string
minLength: 1
role:
type: string
enum:
- admin
- agent_builder
- support_lead
- member
- analyst
- viewer
required:
- userId
- role
removeWorkspaceMemberResponse:
type: object
properties:
deleted:
type: boolean
const: true
required:
- deleted
additionalProperties: false
createWorkspaceInviteResponse:
type: object
properties:
id:
type: string
minLength: 1
workspaceId:
type: string
minLength: 1
email:
type: string
role:
type: string
enum:
- admin
- agent_builder
- support_lead
- member
- analyst
- viewer
token:
type: string
inviteUrl:
type: string
status:
type: string
enum:
- pending
- accepted
- revoked
expiresAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
createdAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
acceptedAt:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- type: 'null'
required:
- id
- workspaceId
- email
- role
- token
- inviteUrl
- status
- expiresAt
- createdAt
- acceptedAt
additionalProperties: false
resendWorkspaceInviteResponse:
type: object
properties:
id:
type: string
minLength: 1
workspaceId:
type: string
minLength: 1
email:
type: string
role:
type: string
enum:
- admin
- agent_builder
- support_lead
- member
- analyst
- viewer
token:
type: string
inviteUrl:
type: string
status:
type: string
enum:
- pending
- accepted
- revoked
expiresAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
createdAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
acceptedAt:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- type: 'null'
required:
- id
- workspaceId
- email
- role
- token
- inviteUrl
- status
- expiresAt
- createdAt
- acceptedAt
additionalProperties: false
listWorkspaceInvitesResponse:
type: array
items:
type: object
properties:
id:
type: string
minLength: 1
workspaceId:
type: string
minLength: 1
email:
type: string
role:
type: string
enum:
- admin
- agent_builder
- support_lead
- member
- analyst
- viewer
token:
type: string
inviteUrl:
type: string
status:
type: string
enum:
- pending
- accepted
- revoked
expiresAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
createdAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
acceptedAt:
anyOf:
- type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- type: 'null'
required:
- id
- workspaceId
- email
- role
- token
- inviteUrl
- status
- expiresAt
- createdAt
- acceptedAt
additionalProperties: false
addWorkspaceMemberResponse:
type: object
properties:
id:
type: string
minLength: 1
workspaceId:
type: string
minLength: 1
userId:
type: string
minLength: 1
role:
type: string
enum:
- owner
- admin
- agent_builder
- support_lead
- member
- analyst
- viewer
createdAt:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
required:
- id
- workspaceId
- userId
- role
- createdAt
additionalProperties: false
cancelWorkspaceInviteResponse:
type: object
properties:
deleted:
type: boolean
const: true
required:
- deleted
additionalProperties: false
updateWorkspaceMemberRoleRequest:
type: object
properties:
role:
type: string
enum:
- admin
- agent_builder
- support_lead
- member
- analyst
- viewer
required:
- role
createWorkspaceInviteRequest:
type: object
properties:
email:
type: string
format: email
pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
role:
type: string
enum:
- admin
- agent_builder
- support_lead
- member
- analyst
- viewer
required:
- email
- role
securitySchemes:
accountSession:
type: apiKey
in: cookie
name: __Secure-better-auth.session_token
description: Signed Better Auth session cookie for an HTTPS application origin. Credential management additionally requires verified email and fresh password proof on writes.
localAccountSession:
type: apiKey
in: cookie
name: better-auth.session_token
description: Signed session cookie used when the configured application auth origin is HTTP, such as local development.
accountBearer:
type: http
scheme: bearer
bearerFormat: Account credential
description: Opaque user-bound `ca_` account credential. Each request checks live account scopes, verified email, expiry, revocation and the issuer session. Not a workspace `ck_` key or OAuth access token.
clientCredentialsBasic:
type: http
scheme: basic
description: Use the API key ID as the username and the one-time `ck_` API key token as the password.
oauth2:
type: oauth2
description: OAuth 2.0 client-credentials tokens bounded by the source API key scope ceiling.
flows:
clientCredentials:
tokenUrl: https://app.communicate.so/api/v1/oauth/token
scopes:
agents:read: List agents in the authenticated workspace.
chat:write: Create chat turns with an agent in the authenticated workspace.
bearerAuth:
type: http
scheme: bearer
bearerFormat: API key
description: Workspace API key token with the `ck_` prefix.
x-refined-from:
- communicate-so-openapi.json
- communicate-so-openapi.json