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

# Read a company follow-up conversation

> Management secret key required. Capture publishable keys cannot read conversations.



## OpenAPI

````yaml /openapi-v1.json get /v1/follow-ups/{id}
openapi: 3.0.0
info:
  title: Woku Client API v1
  description: >-
    Public REST API for programmatic management of woku Voice-of-Customer
    programs: trackers, VoC instruments (NPS, woku, CES, CSAT), action plans,
    support tickets, multi-channel sending and response capture. Requests are
    company-scoped by the API key; never send a company id.
  version: 1.0.0
  contact:
    name: Woku
    url: https://woku.app
    email: team@woku.app
servers:
  - url: https://clientapi.woku.app
    description: Production
security: []
tags: []
paths:
  /v1/follow-ups/{id}:
    get:
      tags:
        - v1 - follow-ups
      summary: Read a company follow-up conversation
      description: >-
        Management secret key required. Capture publishable keys cannot read
        conversations.
      operationId: V1FollowUpsController_get
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
            format: ObjectId
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FollowUpEnvelopeDto'
        '404':
          description: Follow-up not found in this company
      security:
        - bearer: []
components:
  schemas:
    FollowUpEnvelopeDto:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/FollowUpConversationDto'
      required:
        - data
    FollowUpConversationDto:
      type: object
      properties:
        _id:
          type: string
        companyId:
          type: string
        origin:
          $ref: '#/components/schemas/FollowUpOriginDto'
        wokuId:
          type: string
        reviewId:
          type: string
        reviewType:
          type: string
          enum:
            - textnote
            - voicemail
        originalReview:
          type: string
        originalQualification:
          type: number
        state:
          type: string
          enum:
            - pending
            - initial_sent
            - awaiting_detail
            - closing
            - completed
            - timed_out
            - cancelled
        channel:
          type: string
          enum:
            - email
            - whatsapp
        line:
          type: string
          enum:
            - survey_thread
            - follow_up_number
          description: >-
            WhatsApp line. survey_thread: the agent continues the survey
            conversation on the survey number. follow_up_number: the agent
            writes from the dedicated follow-up number. Absent for email.
        reason:
          type: string
          description: >-
            Stable reason code for exclusion, failure or uncertain delivery.
            Provider error details are never exposed.
        messages:
          description: >-
            Messages in order: the survey prelude (phase survey) first, then the
            follow-up (phase follow_up). Filter phase === 'follow_up' for the
            follow-up messages only.
          type: array
          items:
            $ref: '#/components/schemas/FollowUpMessageDto'
        executiveSummary:
          type: string
        actionItems:
          type: array
          items:
            type: string
        sentiment:
          type: string
        topics:
          type: array
          items:
            type: string
        summaryCitations:
          description: >-
            Files the summary cites; the summary text mentions them as "(Archivo
            N)".
          type: array
          items:
            $ref: '#/components/schemas/FollowUpCitationDto'
        summaryVersion:
          type: number
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - _id
        - companyId
        - origin
        - reviewType
        - originalReview
        - state
        - channel
        - messages
        - summaryVersion
    FollowUpOriginDto:
      type: object
      properties:
        tool:
          type: string
          enum:
            - woku
            - nps
            - csat
            - ces
        refId:
          type: string
        instrumentId:
          type: string
      required:
        - tool
        - refId
    FollowUpMessageDto:
      type: object
      properties:
        role:
          type: string
          enum:
            - agent
            - client
        content:
          type: string
          description: Message text. May be empty when the message only has files.
        timestamp:
          type: string
          format: date-time
        phase:
          type: string
          enum:
            - survey
            - follow_up
          description: >-
            survey: the prelude, what the customer said in the survey before the
            follow-up. On the survey_thread line it is the WhatsApp survey
            exchange; on every other line (follow_up_number, email) it is the
            original comment as a client message. follow_up: the follow-up
            itself. Every line may start with the prelude, so messages[0] can be
            a client message; filter phase === 'follow_up' to read only the
            follow-up.
        responseType:
          type: string
        selectedOption:
          type: string
        attachments:
          description: Files the customer sent with this message.
          type: array
          items:
            $ref: '#/components/schemas/FollowUpAttachmentDto'
      required:
        - role
        - content
        - timestamp
        - phase
    FollowUpCitationDto:
      type: object
      properties:
        index:
          type: number
        label:
          type: string
          description: Label of the cited file, e.g. "Archivo 2".
        fileId:
          type: string
        supports:
          type: string
          description: What the file supports in the summary.
        adminUrl:
          type: string
          description: >-
            Admin page that opens this file after login and a company check
            (signed, short-lived download). Never a storage URL.
      required:
        - index
        - label
        - supports
    FollowUpAttachmentDto:
      type: object
      properties:
        index:
          type: number
          description: >-
            Stable number of the file in the conversation (survey prelude
            included).
        label:
          type: string
          description: >-
            Display label in the conversation language, e.g. "Archivo 2" or
            "File 2". Summaries cite files by this label.
        kind:
          type: string
          enum:
            - image
            - audio
            - document
            - unsupported
        fileId:
          type: string
          description: >-
            Private original file (evidence). Absent while pending or when
            nothing was stored (location, contacts, over the limits).
        readableFileId:
          type: string
          description: Converted copy the model read, when there was a conversion.
        filename:
          type: string
        mimeType:
          type: string
        status:
          type: string
          enum:
            - pending
            - ready
            - failed
            - unsupported
        text:
          type: string
          description: >-
            Transcript (audio) or description (image, document) generated from
            the file. Untrusted customer content.
        failureReason:
          type: string
          description: >-
            Stable reason code when failed or unsupported (e.g. video, location,
            message_limit, conversation_limit, read_failed).
        adminUrl:
          type: string
          description: >-
            Admin page that opens this file after login and a company check
            (signed, short-lived download). Never a storage URL.
      required:
        - index
        - label
        - kind
        - filename
        - mimeType
        - status
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: API key
      type: http
      description: Company secret API key.

````

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