> ## Documentation Index
> Fetch the complete documentation index at: https://developer.communicate.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Read a complete accessible ticket thread without marking it seen

> 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.



## OpenAPI

````yaml https://app.communicate.so/api/v1/openapi/mintlify.json get /workspaces/{workspaceId}/inbox/{conversationId}
openapi: 3.1.0
info:
  title: Communicate Public REST API
  version: 0.1.5
  summary: >-
    Scoped agent chat, account credential lifecycle and workspace bootstrap
    operations.
  description: >-
    Canonical external schema for implemented REST operations. Account
    credentials and application sessions authorize the documented account and
    workspace operations separately from workspace keys. Exchange a workspace
    API-key client ID and secret for a short-lived OAuth access token, or use
    the `ck_` key directly for backward compatibility. `requestId` is optional
    but, when supplied, becomes the idempotency key for retries of the same chat
    input.
servers:
  - url: https://app.communicate.so/api/v1
    description: Canonical external base URL served through the Next.js /api/v1 rewrite.
security:
  - oauth2: []
  - bearerAuth: []
paths:
  /workspaces/{workspaceId}/inbox/{conversationId}:
    get:
      tags:
        - Inbox
      summary: Read a complete accessible ticket thread without marking it seen
      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.
      operationId: readInboxConversation
      parameters:
        - name: workspaceId
          in: path
          required: true
          schema:
            type: string
            minLength: 1
        - name: conversationId
          in: path
          required: true
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: Read a complete accessible ticket thread without marking it seen
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/readInboxConversationResponse'
        '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.
      security:
        - accountBearer: []
        - accountSession: []
        - localAccountSession: []
components:
  schemas:
    readInboxConversationResponse:
      type: object
      properties:
        serverNow:
          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)))$
        conversation:
          type: object
          properties:
            id:
              type: string
              minLength: 1
            workspaceId:
              type: string
              minLength: 1
            agentId:
              type: string
              minLength: 1
            channel:
              type: string
              enum:
                - playground
                - widget
                - api
                - email
                - dashboard
            surface:
              type: string
              enum:
                - widget
                - hosted
            visitorId:
              anyOf:
                - type: string
                - type: 'null'
            subject:
              anyOf:
                - type: string
                - type: 'null'
            createdBy:
              anyOf:
                - type: string
                - type: 'null'
            contactId:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            status:
              type: string
              enum:
                - open
                - closed
            mode:
              type: string
              enum:
                - ai
                - human
            modeLocked:
              type: boolean
            modeSource:
              type: string
              enum:
                - legacy
                - manual
                - message_lifecycle
            modeVersion:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            contactEmail:
              anyOf:
                - type: string
                - type: 'null'
            visitorLastSeenAt:
              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'
            visitorSeenAt:
              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'
            agentSeenAt:
              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'
            visitorUserAgent:
              anyOf:
                - type: string
                - type: 'null'
            visitorTimezone:
              anyOf:
                - type: string
                - type: 'null'
            ticketNumber:
              anyOf:
                - type: integer
                  minimum: 0
                  maximum: 9007199254740991
                - type: 'null'
            visitorIp:
              anyOf:
                - type: string
                - type: 'null'
            visitorCountry:
              anyOf:
                - type: string
                - type: 'null'
            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)))$
            lastMessageAt:
              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)))$
            messageCount:
              type: integer
              minimum: 0
              maximum: 9007199254740991
            agentName:
              anyOf:
                - type: string
                - type: 'null'
          required:
            - id
            - workspaceId
            - agentId
            - channel
            - surface
            - visitorId
            - subject
            - createdBy
            - contactId
            - status
            - mode
            - modeLocked
            - modeSource
            - modeVersion
            - contactEmail
            - visitorLastSeenAt
            - visitorSeenAt
            - agentSeenAt
            - visitorUserAgent
            - visitorTimezone
            - ticketNumber
            - visitorIp
            - visitorCountry
            - createdAt
            - lastMessageAt
            - messageCount
            - agentName
          additionalProperties: false
        inbox:
          type: object
          properties:
            conversationId:
              type: string
              minLength: 1
            workspaceId:
              type: string
              minLength: 1
            status:
              type: string
              enum:
                - open
                - closed
                - snoozed
                - spam
            assigneeId:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            teamId:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            priority:
              type: string
              enum:
                - low
                - normal
                - high
                - urgent
            dueAt:
              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'
            updatedAt:
              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'
            assigneeMemberId:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            assigneeWorkspaceId:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            assigneeAgentGrantId:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            assigneeKind:
              anyOf:
                - type: string
                  enum:
                    - source_member
                    - linked_member
                - type: 'null'
            assigneeAssignedAt:
              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'
            assigneeAssignedByMemberId:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            assigneeAssignedByWorkspaceId:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            assigneeAssignedByAgentGrantId:
              anyOf:
                - type: string
                  minLength: 1
                - type: 'null'
            escalatedAt:
              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'
            escalationStatus:
              anyOf:
                - type: string
                  enum:
                    - pending
                    - claimed
                - type: 'null'
          required:
            - conversationId
            - status
            - assigneeId
            - teamId
            - priority
            - dueAt
            - updatedAt
          additionalProperties: false
        messages:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                minLength: 1
              role:
                type: string
                enum:
                  - user
                  - assistant
                  - human
              content:
                type: string
              citations:
                anyOf:
                  - type: array
                    items:
                      type: object
                      properties:
                        sourceId:
                          type: string
                          minLength: 1
                        title:
                          type: string
                        snippet:
                          type: string
                      required:
                        - sourceId
                        - title
                        - snippet
                      additionalProperties: false
                  - type: 'null'
              channel:
                anyOf:
                  - type: string
                    enum:
                      - widget
                      - email
                  - type: 'null'
              emailOpenedAt:
                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'
              emailRaw:
                anyOf:
                  - type: object
                    properties:
                      text:
                        type: string
                      html:
                        type: string
                      quotedHistory:
                        type: object
                        properties:
                          present:
                            type: boolean
                        required:
                          - present
                        additionalProperties: false
                    additionalProperties: false
                  - type: 'null'
              authorMemberId:
                anyOf:
                  - type: string
                    minLength: 1
                  - type: 'null'
              lifecycleStatus:
                type: string
                enum:
                  - queued
                  - sending
                  - sent
                  - undone
                  - failed
                  - uncertain
                  - bounced
              lifecycleVersion:
                type: integer
                exclusiveMinimum: 0
                maximum: 9007199254740991
              revisionCount:
                type: integer
                minimum: 0
                maximum: 9007199254740991
              undoDeadlineAt:
                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'
              sentAt:
                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'
              editDeadlineAt:
                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'
              editedAt:
                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'
              latestFailureCode:
                anyOf:
                  - type: string
                  - type: 'null'
              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)))$
              attachments:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      minLength: 1
                    workspaceId:
                      type: string
                      minLength: 1
                    conversationId:
                      type: string
                      minLength: 1
                    messageId:
                      anyOf:
                        - type: string
                          minLength: 1
                        - type: 'null'
                    uploadedByMemberId:
                      anyOf:
                        - type: string
                          minLength: 1
                        - type: 'null'
                    uploadedByVisitorId:
                      anyOf:
                        - type: string
                        - type: 'null'
                    uploadedByWorkspaceId:
                      anyOf:
                        - type: string
                          minLength: 1
                        - type: 'null'
                    uploadedByAgentGrantId:
                      anyOf:
                        - type: string
                          minLength: 1
                        - type: 'null'
                    uploadedByKind:
                      type: string
                      enum:
                        - visitor
                        - source_member
                        - linked_member
                        - system
                    filename:
                      type: string
                    contentType:
                      type: string
                    detectedContentType:
                      anyOf:
                        - type: string
                        - type: 'null'
                    sizeBytes:
                      type: integer
                      minimum: 0
                      maximum: 9007199254740991
                    kind:
                      type: string
                      enum:
                        - image
                        - file
                    inline:
                      type: boolean
                    contentId:
                      anyOf:
                        - type: string
                        - type: 'null'
                    attachmentState:
                      type: string
                      enum:
                        - staged
                        - uploaded
                        - processing
                        - clean
                        - linked
                        - blocked
                        - failed
                    blockedReason:
                      anyOf:
                        - type: string
                        - type: 'null'
                    uploadConfirmedAt:
                      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'
                    scanCompletedAt:
                      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'
                    quarantinedAt:
                      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'
                    linkedAt:
                      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'
                    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
                    - conversationId
                    - messageId
                    - uploadedByMemberId
                    - uploadedByVisitorId
                    - uploadedByWorkspaceId
                    - uploadedByAgentGrantId
                    - uploadedByKind
                    - filename
                    - contentType
                    - detectedContentType
                    - sizeBytes
                    - kind
                    - inline
                    - contentId
                    - attachmentState
                    - blockedReason
                    - uploadConfirmedAt
                    - scanCompletedAt
                    - quarantinedAt
                    - linkedAt
                    - createdAt
                  additionalProperties: false
            required:
              - id
              - role
              - content
              - citations
              - channel
              - emailOpenedAt
              - emailRaw
              - authorMemberId
              - lifecycleStatus
              - lifecycleVersion
              - revisionCount
              - undoDeadlineAt
              - sentAt
              - editDeadlineAt
              - editedAt
              - latestFailureCode
              - createdAt
              - attachments
            additionalProperties: false
        notes:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                minLength: 1
              workspaceId:
                type: string
                minLength: 1
              conversationId:
                type: string
                minLength: 1
              authorId:
                type: string
                minLength: 1
              authorMemberId:
                anyOf:
                  - type: string
                    minLength: 1
                  - type: 'null'
              authorWorkspaceId:
                anyOf:
                  - type: string
                    minLength: 1
                  - type: 'null'
              authorAgentGrantId:
                anyOf:
                  - type: string
                    minLength: 1
                  - type: 'null'
              authorKind:
                type: string
                enum:
                  - source_member
                  - linked_member
                  - system
              audienceKind:
                type: string
                enum:
                  - source_only
                  - source_plus_author_destination
              audienceDestinationWorkspaceId:
                anyOf:
                  - type: string
                    minLength: 1
                  - type: 'null'
              body:
                type: string
              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
              - conversationId
              - authorId
              - authorMemberId
              - authorWorkspaceId
              - authorAgentGrantId
              - authorKind
              - audienceKind
              - audienceDestinationWorkspaceId
              - body
              - createdAt
            additionalProperties: false
        contact:
          anyOf:
            - type: object
              properties:
                id:
                  type: string
                  minLength: 1
                workspaceId:
                  type: string
                  minLength: 1
                email:
                  type: string
                name:
                  anyOf:
                    - type: string
                    - type: 'null'
                location:
                  anyOf:
                    - type: string
                    - type: 'null'
                company:
                  anyOf:
                    - type: string
                    - type: 'null'
                companySize:
                  anyOf:
                    - type: string
                    - type: 'null'
                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)))$
                updatedAt:
                  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
                - email
                - name
                - location
                - company
                - companySize
                - createdAt
                - updatedAt
              additionalProperties: false
            - type: 'null'
        voiceSessions:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                minLength: 1
              status:
                type: string
                enum:
                  - starting
                  - active
                  - finalizing
                  - completed
                  - failed
                  - abandoned
              recordingStatus:
                type: string
                enum:
                  - pending
                  - available
                  - failed
                  - deleted
              durationSeconds:
                anyOf:
                  - type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  - type: 'null'
              summary:
                anyOf:
                  - type: string
                  - type: 'null'
              playbackUrl:
                type: string
              transcript:
                type: array
                items:
                  type: object
                  properties:
                    messageId:
                      type: string
                      minLength: 1
                    role:
                      type: string
                      enum:
                        - user
                        - assistant
                    text:
                      type: string
                    startMs:
                      type: integer
                      minimum: 0
                      maximum: 9007199254740991
                    endMs:
                      type: integer
                      minimum: 0
                      maximum: 9007199254740991
                  required:
                    - messageId
                    - role
                    - text
                  additionalProperties: false
            required:
              - id
              - status
              - recordingStatus
              - durationSeconds
              - summary
              - transcript
            additionalProperties: false
        recentConversations:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                minLength: 1
              subject:
                anyOf:
                  - type: string
                  - type: 'null'
              status:
                type: string
                enum:
                  - open
                  - closed
              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)))$
              lastMessageAt:
                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
              - subject
              - status
              - createdAt
              - lastMessageAt
            additionalProperties: false
        labels:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                minLength: 1
              name:
                type: string
              color:
                type: string
            required:
              - id
              - name
              - color
            additionalProperties: false
        csatRating:
          anyOf:
            - type: integer
              minimum: 1
              maximum: 5
            - type: 'null'
      required:
        - serverNow
        - conversation
        - inbox
        - messages
        - notes
        - contact
        - voiceSessions
        - recentConversations
        - labels
        - csatRating
      additionalProperties: false
  securitySchemes:
    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.
    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.
    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.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.