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

# get_sales_coach_discussion

Full transcript of one Sales Coach discussion.

A list\_sales\_coach\_discussions row plus every message in order — each question,
the answer it got, the Qobra data tools the agent ran to ground that answer —
and the escalations that opened a request. Reach for it to diagnose a single
conversation: what was asked, what the agent answered, and where it fell back to
a human.

Reserved to full statement access, like list\_sales\_coach\_discussions. A
discussion you cannot reach reads exactly like one that does not exist.

## Parameters

<Accordion title="Body" defaultOpen>
  <ParamField body="discussion_id" type="string" required>
    Id of the discussion to read — the id returned by
    list\_sales\_coach\_discussions.
  </ParamField>
</Accordion>

## Response

<Accordion title="Body" defaultOpen>
  <ResponseField name="id" type="string" />

  <ResponseField name="resource_url" type="string">
    Deep link to the statement the discussion is about, in the Qobra web app.
    Discussions have no page of their own.
  </ResponseField>

  <ResponseField name="author" type="object">
    The user who asked the questions.

    <Expandable title="object properties">
      <ResponseField name="id" type="string" />

      <ResponseField name="email" type="string" />

      <ResponseField name="name" type="string" />
    </Expandable>
  </ResponseField>

  <ResponseField name="statement" type="object">
    <Expandable title="object properties">
      <ResponseField name="id" type="string" />

      <ResponseField name="period" type="string">
        Statement period, YYYY-MM.
      </ResponseField>

      <ResponseField name="owner" type="object">
        The user the statement belongs to. Usually also the discussion's author
        (a rep asking about their own statement), but an admin or manager can
        question someone else's statement.

        <Expandable title="object properties">
          <ResponseField name="id" type="string" />

          <ResponseField name="email" type="string" />

          <ResponseField name="name" type="string" />
        </Expandable>
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="first_question" type="string">
    The opening question, verbatim — what the user came for. Null for a
    discussion with no user message yet.
  </ResponseField>

  <ResponseField name="question_count" type="integer">
    Number of questions the user asked. Excludes the replies they gave to the
    agent's own clarifying questions, which are stored as user messages too.
  </ResponseField>

  <ResponseField name="message_count" type="integer">
    Total messages in the transcript, questions and answers together.
  </ResponseField>

  <ResponseField name="escalation_count" type="integer">
    Number of times the agent escalated to a human, opening a request. Above
    zero means the agent could not answer on its own — fetch
    get\_sales\_coach\_discussion for the escalation detail.
  </ResponseField>

  <ResponseField name="started_at" type="string">
    When the discussion was opened — the sort key, most recent first, and what
    the start/end filters match.
  </ResponseField>

  <ResponseField name="updated_at" type="string">
    Last activity on the discussion.
  </ResponseField>

  <ResponseField name="messages" type="object[]">
    The full transcript in chronological order — each question and the answer it
    got, with the tools that produced it.

    <Expandable title="object properties">
      <ResponseField name="role" type="string">
        Who wrote the message: 'user' (the question asked), 'assistant' (the
        agent's answer) or 'system'. Tool traffic is folded into the answer's
        `tools` rather than surfacing as its own message. One of: `user`,
        `assistant`, `system`, `tool`.
      </ResponseField>

      <ResponseField name="content" type="string" />

      <ResponseField name="timestamp" type="string" />

      <ResponseField name="tools" type="string[]">
        Names of the Qobra data tools the agent ran to produce this answer, in
        call order — how it grounded the reply. Empty on a user message, and on
        an answer that needed no lookup.
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="escalations" type="object[]">
    The human hand-overs the agent opened, in order.

    <Expandable title="object properties">
      <ResponseField name="title" type="string" />

      <ResponseField name="request" type="object">
        The request the escalation opened, named after the escalation title.
        Null when you have no access to that request — the escalation still
        happened.

        <Expandable title="object properties">
          <ResponseField name="id" type="string" />

          <ResponseField name="name" type="string" />
        </Expandable>
      </ResponseField>
    </Expandable>
  </ResponseField>
</Accordion>
