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

# Get a coach call transcript

> Get the diarized transcript for a coach (QA) call — including CSR / human-handled calls, which have no AI transcript at `GET /api/calls/{id}/transcript`. Speakers are labelled `agent` or `customer` once the call has been evaluated. A turn reads `unknown` when the call has not been speaker-labelled, or when the speaker is neither the agent nor the customer — typically IVR or hold-music audio, which is deliberately not attributed to the caller. Use `has_transcript` on the coach call to tell which calls have one. Requires the `read:transcripts` permission.



## OpenAPI

````yaml /api-reference/openapi.json get /api/coach/{id}/transcript
openapi: 3.1.0
info:
  title: Avoca Enterprise API
  description: >-
    Read-only programmatic access to Avoca data: calls and recordings,
    transcripts, leads, coach evaluations, Simple Scheduler sessions and
    analytics, outbound texting activity, and enterprise support tickets.
  version: 1.4.0
servers:
  - url: https://enterprise-api.avoca.ai
security:
  - bearerAuth: []
tags:
  - name: Calls
    description: Call records, recordings, transcripts, and pre-call transfers
  - name: Leads
    description: Unified leads (v0) and the canonical leads feed (v1)
  - name: Teams
    description: Teams accessible to the API key
  - name: Coach
    description: Coach (QA) call evaluations and rubrics
  - name: Scheduler Analytics (v0)
    description: Simple Scheduler analytics — legacy flat endpoints
  - name: Sessions & Bookings
    description: v1 scheduling-widget sessions and completed bookings
  - name: Analytics (v1)
    description: v1 funnel, UTM, service-area, and issue-type analytics
  - name: Outbound Texting
    description: Campaign text and subscription-event feeds for BI ingestion
  - name: Support Tickets
    description: Customer-safe enterprise support-ticket feed
paths:
  /api/coach/{id}/transcript:
    get:
      tags:
        - Coach
      summary: Get a coach call transcript
      description: >-
        Get the diarized transcript for a coach (QA) call — including CSR /
        human-handled calls, which have no AI transcript at `GET
        /api/calls/{id}/transcript`. Speakers are labelled `agent` or `customer`
        once the call has been evaluated. A turn reads `unknown` when the call
        has not been speaker-labelled, or when the speaker is neither the agent
        nor the customer — typically IVR or hold-music audio, which is
        deliberately not attributed to the caller. Use `has_transcript` on the
        coach call to tell which calls have one. Requires the `read:transcripts`
        permission.
      operationId: getCoachCallTranscript
      parameters:
        - name: id
          in: path
          required: true
          description: Coach call ID (number)
          schema:
            type: integer
        - $ref: '#/components/parameters/xTeamId'
      responses:
        '200':
          description: The transcript as both a diarized string and structured utterances
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoachCallTranscript'
              example:
                call_id: 24680135
                avoca_call_id: null
                team_id: 1
                format: diarized
                transcript: |-
                  agent [00:02]: Thanks for calling, this is Dana.
                  customer [00:06]: Hi, my AC stopped working.
                utterances:
                  - speaker: agent
                    speaker_id: 0_0
                    speaker_name: Dana Reyes
                    start_seconds: 2.16
                    end_seconds: 4.88
                    text: Thanks for calling, this is Dana.
                  - speaker: customer
                    speaker_id: 0_1
                    speaker_name: Chris Martin
                    start_seconds: 6.02
                    end_seconds: 8.4
                    text: Hi, my AC stopped working.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: The coach call does not exist for this team, or it has no transcript
components:
  parameters:
    xTeamId:
      name: x-team-id
      in: header
      description: >-
        Target team ID. Required for multi-team (`enterprise_all_teams` /
        `portfolio_all_teams`) keys on v0 endpoints; single-team keys are locked
        to their team and omit it.
      schema:
        type: integer
  schemas:
    CoachCallTranscript:
      type: object
      properties:
        call_id:
          type: integer
          description: Coach call ID (the same integer ID used by `GET /api/coach/{id}`)
        avoca_call_id:
          type:
            - string
            - 'null'
          description: Calls API call_id when this Coach record is linked to an Avoca call
        team_id:
          type: integer
        format:
          type: string
          enum:
            - diarized
        transcript:
          type: string
          description: >-
            Newline-separated `<speaker> [mm:ss]: <text>` lines, same line
            format as `GET /api/calls/{id}/transcript`
        utterances:
          type: array
          items:
            $ref: '#/components/schemas/CoachCallTranscriptUtterance'
      required:
        - call_id
        - avoca_call_id
        - team_id
        - format
        - transcript
        - utterances
    CoachCallTranscriptUtterance:
      type: object
      description: >-
        One diarized turn. `speaker_name` is the ServiceTitan agent or customer
        name when known.
      properties:
        speaker:
          type: string
          enum:
            - agent
            - customer
            - unknown
        speaker_id:
          type: string
          description: Raw diarization speaker id (`<channel>_<speaker>`)
          examples:
            - 0_0
        speaker_name:
          type:
            - string
            - 'null'
        start_seconds:
          type: number
        end_seconds:
          type: number
        text:
          type: string
      required:
        - speaker
        - speaker_id
        - speaker_name
        - start_seconds
        - end_seconds
        - text
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error type
        message:
          type: string
          description: Human-readable description (newer endpoints)
      required:
        - error
  responses:
    BadRequest:
      description: Invalid parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: API key lacks the required permission or team access
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key in the format `avoca_<64 hex characters>`

````